Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过查看gc日志来查看正在运行的垃圾收集器?_Java_Garbage Collection_Jvm - Fatal编程技术网

Java 如何通过查看gc日志来查看正在运行的垃圾收集器?

Java 如何通过查看gc日志来查看正在运行的垃圾收集器?,java,garbage-collection,jvm,Java,Garbage Collection,Jvm,如何通过查看次要收集和主要收集的gc日志来查看垃圾收集器(CMS、Parallel等)在运行什么?我无法访问设置为java的命令行选项(appserver的sysadm不允许我看到它们)。我确实有相当详细的gc日志。gc消息的确切格式取决于JVM版本和JVM设置。你可以在网站上看到样品 DefNew是默认收集器。它是串行的还是并行的,选择哪一个取决于JVM版本/设置。您可以使用java-XX:+PrintCommandLineFlags-version在JDK6中查看默认设置。在我的系统上,它打

如何通过查看次要收集和主要收集的gc日志来查看垃圾收集器(CMS、Parallel等)在运行什么?我无法访问设置为java的命令行选项(appserver的sysadm不允许我看到它们)。我确实有相当详细的gc日志。

gc消息的确切格式取决于JVM版本和JVM设置。你可以在网站上看到样品

DefNew
是默认收集器。它是串行的还是并行的,选择哪一个取决于JVM版本/设置。您可以使用
java-XX:+PrintCommandLineFlags-version
在JDK6中查看默认设置。在我的系统上,它打印:

-XX:MaxHeapSize=1073741824 -XX:ParallelGCThreads=4 -XX:+PrintCommandLineFlags -XX:+UseParallelGC
这意味着并行GC对我来说是
DefNew
。你可以检查一下这个和其中一个答案,也许它会对你有所帮助

更新JDK 6中的默认旧代GC是ParallelOldGC,请参阅。特别是,您可以使用
-XX:+UseConcMarkSweepGC将旧的Gen GC更改为新的并发标记扫描GC

JVM选项。

您可以在中找到所有热点JVM垃圾收集算法的GC日志示例

-XX:+PrintGCDetails
应该启用,以便在GC日志中查看该级别的详细信息。

引用Charlie Hunt的《Java性能》一书,GC日志中使用的年轻一代空间的名称会随着GC的使用而变化:

PSYoungGen => ParallelGC
ParNew =>  CMS
DefNew  => SerialGC

我对G1不太清楚

我已经看过这个文档,但我无法将DefNew、PSYoungGen或ParOldGen等连接到特定的收集器。我在哪里可以找到这张表?因为各代没有与特定的收集器连接。只有一个。您需要阅读有关分代GC模型的内容,并让Visual VM运行:@duffymo:我知道分代并没有与特定的收集器连接。在我自己尝试之后,我想我看到了DefNew意味着串行采集器,ParNew意味着CMS采集器,PSYoungGen意味着年轻一代的并行采集器。我要找的是所有选项的翻译表。@Victor Sorokin:谢谢,这是我需要的。可以肯定的是,在您的示例中,并行GC是年轻人和老年人的默认GC吗?