ネイティブコード (JNI のネイティブメソッド等) の場合, HotSpot 内の制御とは無関係なのでメソッド実行中に強制的に停止させる方法はない.
このため, 処理が HotSpot 内に戻ってきたタイミングで明示的にチェックさせて停止させている. 具体的には以下の箇所が Safepoint になる.
(<= 逆に言うと HotSpot 内に戻ってこなければチェックもないので停止されないが, ネイティブコードについてはそれでよいという設計方針になっている. このため, ネイティブコード実行中のスレッドに付いては VM Thread も停止するまで待たない. どのみち HotSpot 内に戻ってこなければ VM Operation 等に支障を来すような処理は行えないので, 停止していなくても問題はない)
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.