4

Hotspot では、System.gc() が呼び出されたときに、コマンド ラインに -XX:+ExplicitGCInvokesConcurrent オプションを追加することで、これに Concurrent-Mark-Sweep コレクターを使用させることができます。

System.gc() が呼び出されたときに JVM に G1 コレクタを使用させるのと同等のものはありますか? デフォルトでは、標準の並列コレクターが使用されているようです。

私はそうではないと思いますが、誰かが確認できるかどうか疑問に思いました.

心配しないで!私自身は System.gc() を呼び出すつもりはありませんが、JVM の一部 (ダイレクト バッファー、RMI) が呼び出されることに依存しています。

4

2 に答える 2

4

このバグ投稿から:

G1 が ExplicitGCInvokesConcurrent を監視するようになりました

それを確認するこのリンクもあります。

私の知る限り、特別なコマンドはありません。Oracle JVMオプションのリストも、この長いリストも、そのようなコマンドオプションを参照していません。

于 2012-06-19T11:53:43.453 に答える
0
bool G1CollectedHeap::should_do_concurrent_full_gc(GCCause::Cause cause) {
  switch (cause) {
    case GCCause::_gc_locker:               return GCLockerInvokesConcurrent;
    case GCCause::_java_lang_system_gc:     return ExplicitGCInvokesConcurrent;
    case GCCause::_g1_humongous_allocation: return true;
    default:                                return false;

} }

bool ExplicitGCInvokesConcurrent = false {製品}

于 2015-01-28T08:02:37.690 に答える