参照されていないオブジェクトをクリーンアップする前にガベージコレクタがアプリケーションスレッドをフリーズすると、すべてのスレッドが実行中の「セーフポイント」にある必要があります。私は、セーフポイントのコンセプトを記述した豊富な文章を見つけましたが、例はほとんどありません。典型的なJavaメソッドの中にはどこにセーフポイントが置かれ、その理由は?さらに重要なことに、どこでセーフポイントが発生しないのでしょうか?Java GC safepoint
答えて
残念ながら、これはあまり定義されていません。 JVMは、Safepointを決定するとSafepointを配置しますが、その時点までの仕様はありません。 Javaの次のバージョン/アップデートは異なる場合があります。セーフポイントを持たないUnsafe.copyMemory()のようなケースがいくつかありますが、セーフポイントをどこに配置するかはわかりません。
safepoint
の正確な定義と実装は、VMの実装ごとに異なりますが、Hotspot VMを考慮すると、Safepoints in HotSpot JVMという素晴らしい定義があります。
HotSpot glossaryは言う:
すべてのGCの根が知られており、すべてのヒープオブジェクトの内容が一致しているされるプログラム実行中のポイント。グローバルな観点からは、GCを実行する前にすべてのスレッドをセーフポイントでブロックする必要があります。
通常、セーフポイントは、JVMは、メソッドへのセーフポイントのチェックを注入することにより実現され、ほとんどの呼び出しサイトがsafepointsとしての資格 - セーフポイントのチェックに到達したときにセーフポイントが必要な場合は、スレッドがチェックされます(FullGCが予定されているなど)そうであれば、スレッドはブロックする。 VMブロック内のすべてのスレッドが完了すると、VM内のすべてのオブジェクトが完全に到達可能なセーフポイントに到達しました。次に、セーフポイントを要求したVMオペレーション(例えば、FullGC)が実行され、その後スレッドが再開される。
safepointを必要とするVM操作のリストを確認してください:Safety First: Safepoints。
-XX:+PrintSafepointStatistics –XX:PrintSafepointStatisticsCount=1
を使用すると、ホットスポットでのセーフポイントの動作を調べることができます。
- 1. Java GC CMSコレクタタイム
- 2. Java GCログ分析
- 3. JavaのGCコンセプト:CMSInitiatingOccupancyFraction
- 4. Java:参照とGC
- 5. Java 8ラムダクロージャとGC
- 6. Tomcat Java GC問題Linux
- 7. Javaの8フルGCと
- 8. GC Clojure/Java/JVMメモリ設定
- 9. 文字列のJava GCチューニング
- 10. java - GCアプリケーションの実行が遅い
- 11. Java GCとメモリ使用量のトラッキング
- 12. なぜJNIアクティブインスタンスはGCを防止しますか?
- 13. GCパラメータMaxTenuringThresholdが
- 14. Java GCログは、メジャーおよびフルGCについて明らかではありません - シリアルコレクタ
- 15. Node.js GCマークコンパクト
- 16. jp @ gc - WebDriver Sampler
- 17. Azul Zing GCコレクション
- 18. AppDomainsとGCヒープ
- 19. Session_set_save_handler close/gc
- 20. JVM minute long GC
- 21. Jmeter:jp @ gc - WebDriver Sampler
- 22. Java 8のGCが明らかにJava 7と比較して遅くなる
- 23. javaでGC時間を増やすには?
- 24. Oracle Application Server上の各Java VM用の個別のGCログ・ファイル
- 25. オブジェクトの割り当てとJavaでのGCの動作
- 26. android JavaソースでInitate GCを使用するには?
- 27. Javaの匿名クラスのGCルールを見つける方法は?
- 28. JavaのGCログのタイムゾーンを指定する方法は?
- 29. Javaの詳細:gc出力の読み方は?
- 30. Java GCログに奇妙な文字がいっぱいです
まだネイティブコールを除いて、私はセーフポイントとは何かの例を見つけることができません。おそらくそれはあまり定義されていませんが、それにもかかわらずイライラします。 – Cowboy
関連する例とバグ報告が検討されています[ここ](http://stackoverflow.com/q/35154352/230513)。 – trashgod