sách gpt4 ăn đã đi

jvm - Hành vi JVM tùy ý

In lại Tác giả: Walker 123 Thời gian cập nhật: 29-11-2023 06:20:36 26 4
mua khóa gpt4 giày nike

Hãy tưởng tượng tất cả 6-7 máy chủ đều có cùng thiết lập môi trường thời gian chạy OpenJDK phiên bản Java "1.6.0_18" (IcedTea6 1.8) (fedora-36.b18.fc11-i386) Máy ảo máy chủ OpenJDK (bản dựng 14.0-b16, chế độ hỗn hợp)

Mỗi chương trình (ngốn nhiều bộ nhớ và CPU) chạy hàng giờ hoặc thậm chí nhiều ngày, hoàn thành thành công nhiều lần (nhận số liệu thống kê và những thứ tương tự),Nhưng trên máy, bất kể các tham số tôi đã tuân thủ (javac -source 1.5 *.java/javac -O -source 1.5, javac **, hãy tự tưởng tượng bất kỳ sự kết hợp nào :))
Hoặc chạy nó (-Xms200000k hoặc chỉ java blabla.java bạn hiểu ý)

Cuối cùng tôi nhận được "java.lang.ArrayIndexOutOfBoundsException:-1341472392" tại một thời điểm hoặc lần lặp cụ thể? !Trước hết, chương trình sẽ không bao giờ sử dụng những giá trị lớn như vậy chứ đừng nói đến số âm. (Dòng mã là lệnh gọi tới ArrayList chứa số nguyên) (Tôi nhận thấy rằng số này mỗi lần khác nhau)

Cũng lưu ý rằng tôi có thể "khôi phục" một bài kiểm tra bị lỗi, tôi có thể thực hiện một số bài kiểm tra trên máy này và nó lại gặp sự cố.

Không sao đâu, tôi không có những chiếc hộp này và mọi thứ khác đều ổn, nhưng tôi thấy lạ.

Vì lợi ích cá nhân, làm thế nào điều này lại xảy ra trên OpenJDK vốn không có nhiều hứa hẹn?

câu trả lời hay nhất

Nghe có vẻ kỳ lạ. Biến được sử dụng để lập chỉ mục cho mảng có phải là biến dài hay nó bị ảnh hưởng bởi biến dài? Trong trường hợp này, quyền truy cập vào biến không được đảm bảo là nguyên tử:

từ http://java.sun.com/docs/books/jls/second_edition/html/memory.doc.html#28733

Nếu một biến double hoặc long không được khai báo là biến động, thì đối với mục đích tải, lưu trữ, đọc và ghi, chúng được xử lý như thể chúng là hai biến, mỗi biến 32 bit: bất cứ khi nào các quy tắc yêu cầu một trong những hành động này, hai hành động như vậy được thực hiện, một cho mỗi nửa 32 bit. Cách thức mà 64 bit của một biến double hoặc long được mã hóa thành hai số lượng 32 bit phụ thuộc vào việc triển khai. Các hành động tải, lưu trữ, đọc và ghi trên các biến biến động là nguyên tử, ngay cả khi kiểu của biến là double hoặc long.

Nếu bạn nghi ngờ đây có thể là vấn đề, bạn có thể thử khai báo biến chỉ mục dễ bay hơi hoặc sử dụng một số phương pháp đồng bộ hóa khác (chẳng hạn như sử dụng AtomicLong hoặc tương tự).

Về jvm - hành vi JVM tùy ý, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/3179771/

26 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress