從IBM:爲什麼-Xrs降低性能
-Xrs
禁用信號在JVM處理。
-Xrs
設置-Xrs防止處理任何內部或外部產生的信號,例如SIGSEGV和SIGABRT了Java運行™時環境。所有引發的信號都由默認的操作系統處理程序處理。 取決於應用程序,禁用JVM中的信號處理可將性能降低約2-4%。
-Xrs:同步
在UNIX系統上,這個選項禁用在JVM對SIGSEGV,SIGFPE,SIGBUS,SIGILL,SIGTRAP,andSIGABRT信號的信號處理。但是,JVM仍然處理SIGQUIT和SIGTERM信號等。與-Xrs一樣,使用-Xrs:同步會將性能降低約2-4%,具體取決於應用。
注:設置此選項可防止由JVM對信號如SIGSEGV和SIGABRT產生轉儲,因爲JVM不再截取這些信號。
從我的理解,-Xrs
真的是用來防止轉儲從當某些OS的信號被截獲的產生。
由於JVM不再截獲和處理這些信號,如權利由IBM會站在原因,這會增加性能,不減少它。
爲什麼-Xrs
會降低性能?
順便說一句,安全點輪詢的影響通常不是那麼大。信號處理程序也用於隱式空值檢查,用於堆棧溢出檢查(aka * stack banging *),用於本機方法調用的遠程內存屏障,用於快速JNI_GetField,用於隱式處理整數除法邊界情況以及其他一些優化。 – apangin
@apangin我知道JVM使用其他操作的技巧,但我不熟悉它們。我鼓勵你寫一個描述他們的答案。 (如果存在不準確性,請進行編輯;我的記憶是HotSpot做了測試,但沒有寫入數據。) – chrylis
您說得對,HotSpot在x86上進行'測試'以進行安全點輪詢。對不起,我把這與堆棧撞擊混淆了。我認爲所有這些JVM技巧都值得特別關注。希望很快寫出來。 – apangin