Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 jvmg1gc日志分析_Java_Jvm_Jvm Hotspot_Jvm Arguments - Fatal编程技术网

Java jvmg1gc日志分析

Java jvmg1gc日志分析,java,jvm,jvm-hotspot,jvm-arguments,Java,Jvm,Jvm Hotspot,Jvm Arguments,请帮助检查我的GC日志生成失败的原因,或者是否有任何问题 我的java开始参数是 -Xms5G-Xmx5G-Xss1024K -XX:+UseG1GC-XX:MaxGCPauseMillis=200-XX:G1HeapRegionSize=4m -详细说明:gc-XX:+PrintGCDetails-XX:+PrintGCDateStamps-XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime-XX:+PrintGCApplicati

请帮助检查我的GC日志生成失败的原因,或者是否有任何问题

我的java开始参数是

-Xms5G-Xmx5G-Xss1024K
-XX:+UseG1GC-XX:MaxGCPauseMillis=200-XX:G1HeapRegionSize=4m
-详细说明:gc-XX:+PrintGCDetails-XX:+PrintGCDateStamps-XX:+PrintGCTimeStamps
-XX:+PrintGCApplicationStoppedTime-XX:+PrintGCApplicationncCurrentTime-XX:-PrintCommandLineFlags
-XX:+PrintAdaptiveSizePolicy-XX:+PrintTenuringDistribution-XX:+PrintReferenceGC
-Xloggc:/data/gclog/gc-XX:+UseGCLogFileRotation-XX:NumberOfGCLogFiles=5-XX:GCLogFileSize=100M
我已经设置了一个循环来生成jvmg1gc日志。这是我第一次使用G1 GC。但是它总是创建一个包含很少内容的日志“gc.0.current”,“gc”是日志的名称。内容如下

Java HotSpot(TM)64位服务器虚拟机(25.73-b02),用于linux-amd64 JRE(1.8.0_73-b02),由“Java_re”于2016年1月29日17:39:45通过gcc 4.3.0 20080428(Red Hat 4.3.0-8)构建
内存:4k页,物理8056924k(5058272k可用),交换4194300k(4194300k可用)
命令行标志:-XX:G1HeapRegionSize=4194304-XX:GCLogFileSize=104857600-XX:InitialHeapSize=5368709120-XX:maxgcpausemilis=200-XX:MaxHeapSize=5368709120-XX:NumberOfGCLogFiles=5-XX:+PrintAdaptiveSizePolicy-XX:-PrintCommandLineFlags-XX:+PrintGC-XX:+printGCApplicationCurrentTime-XX:+printGCApplicationsTopedTime-XX:+PrintGCDateStamps-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintReferenceGC-XX:+PrintTenuringDistribution-XX:ThreadStackSize=1024-XX:+UseCompressedClassPointers-XX:+UseCompressedOops-XX:+UseG1GC-XX:+UseLogFileRotation
0.012:[G1工效学(堆大小调整)扩展堆,请求的扩展量:5368709120字节,尝试的扩展量:5368709120字节]
2019-08-21T23:23:26.706-0500:0.212:应用时间:0.1403261秒
2019-08-21T23:23:26.706-0500:0.212:应用程序线程停止的总时间:0.0001008秒,停止线程的时间:0.0000202秒
堆
垃圾第一堆总计5242880K,使用8192K[0x0000000680000000,0x0000000680402800,0x00000007c000000)
区域大小4096K,3名年轻人(12288K),0名幸存者(0K)
元空间使用7309K,容量7452K,提交7552K,保留1056768K
已使用类空间853K,容量888K,已提交896K,保留1048576K
2019-08-21T23:23:26.775-0500:0.281:应用时间:0.0686930秒
没有创建其他日志。你知道为什么吗?我在服务器上运行了很多任务,假设它应该生成一些GC日志

您能看到上述日志内容有任何异常吗

是否有其他方法可以查看Linux服务器上的GC活动


谢谢,

我在simple CRUD服务上测试了所有参数,没有问题。但是当我在Hello world应用程序上测试时,打印的日志与您的日志相同,因为没有触发GC。当我在Hello world应用程序上使用
System.GC()
手动触发GC时,打印的GC日志


总之,如果GC没有采取任何行动,日志将不会打印。

可能是
-XX:+UseGCLogFileRotation
的问题。我以前遇到过同样的问题,这对我来说很有效:

-Xloggc:/data/gclog/gc
而不是

-Xloggc:/data/gclog/gc -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=100M
这是我在我的产品上调优G1GC时的注意事项,希望您能找到一些有用的信息:


另外,还有一个建议。一个GC日志文件将更容易导入分析工具,如。

打印在GC日志底部的堆布局表示Java进程已终止

堆布局在两种情况下打印:在GC之前/之后,如果指定了
-XX:+PrintHeapAtGC
,以及在JVM退出之前。在您的情况下,显然是后者

JVM几乎在启动后立即退出(它只运行了281毫秒)。最有可能的情况是,它无法启动应用程序(检查VM输出),或者做了一些非常简单的事情,即刚刚启动了一个新的子进程


请注意,一个新的JVM处理以前编写的日志文件。

感谢这篇文章,它非常有用。虽然它是一个产品应用程序,但我认为我将始终需要使用旋转日志。嗯,也许这是我的错,我会做更多的负载测试。我只是想知道日志输出是否有任何错误。我相信你是正确的应用程序在服务器上仍然运行良好,tomcat日志也正确生成,似乎只有GC日志停止了。