Từ IBM:Tại sao -Xrs làm giảm hiệu suất
-Xrs
Vô hiệu hóa tín hiệu xử lý trong JVM.
-Xrs
Thiết -Xrs ngăn Java ™ môi trường thời gian chạy từ xử lý bất kỳ tín hiệu nội bộ hay bên ngoài tạo ra như SIGSEGV và SIGABRT. Bất kỳ tín hiệu nào được nâng lên đều được xử lý bởi các trình xử lý hệ điều hành mặc định. Tắt xử lý tín hiệu trong JVM làm giảm hiệu suất khoảng 2-4%, tùy thuộc vào ứng dụng.
-Xrs: đồng bộ
Trên hệ thống UNIX, tùy chọn này sẽ vô hiệu hóa việc xử lý tín hiệu trong JVM cho SIGSEGV, SIGFPE, SIGBUS, SIGILL, SIGTRAP, tín hiệu andSIGABRT. Tuy nhiên, JVM vẫn xử lý tín hiệu SIGQUIT và SIGTERM, trong số những người khác. Như với -Xrs, việc sử dụng -Xrs: đồng bộ giảm hiệu suất khoảng 2-4%, tùy thuộc vào ứng dụng.
Lưu ý: Đặt tùy chọn này ngăn chặn các bãi được tạo bởi JVM cho các tín hiệu như SIGSEGV và SIGABRT, vì JVM không còn chặn các tín hiệu này nữa.
Từ hiểu biết của tôi, -Xrs
thực sự được sử dụng để ngăn chặn bãi từ được tạo ra khi tín hiệu hệ điều hành nhất định được chặn.
Kể từ khi JVM không còn chặn và xử lý các tín hiệu này, nó sẽ đứng để lý do này sẽ tăng hiệu suất, không giảm nó như tuyên bố chủ quyền của IBM.
Tại sao -Xrs
giảm hiệu suất?
BTW, tác động của việc bỏ phiếu thông thường không lớn. Các trình xử lý tín hiệu cũng được sử dụng cho các kiểm tra ngầm định, để kiểm tra tràn ngăn xếp (gọi là ngăn xếp ngăn xếp), cho các rào cản bộ nhớ từ xa trên các cuộc gọi phương thức gốc, cho JNI_GetField nhanh, để xử lý ngầm các trường hợp phân chia số nguyên và một số tối ưu hóa khác. – apangin
@apangin Tôi biết rằng JVM sử dụng các thủ thuật cho các hoạt động khác nhưng không quen thuộc với chúng. Tôi khuyến khích bạn viết một câu trả lời mô tả chúng. (Và chỉnh sửa nếu có một thiếu chính xác, bộ nhớ của tôi là HotSpot đã làm một bài kiểm tra nhưng không phải là viết.) – chrylis
Bạn đang phải, HotSpot hiện 'test' trên x86 để bỏ phiếu an toàn. Xin lỗi, tôi đã nhầm lẫn điều này với chồng đập. Tôi nghĩ rằng tất cả các thủ thuật JVM xứng đáng một bài đặc biệt; hy vọng sẽ viết điều này sớm. – apangin