Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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 JVM性能问题分析_Java_Performance_Memory Leaks_Garbage Collection_Jvm - Fatal编程技术网

Java JVM性能问题分析

Java JVM性能问题分析,java,performance,memory-leaks,garbage-collection,jvm,Java,Performance,Memory Leaks,Garbage Collection,Jvm,我的应用程序突然停止,我怀疑这可能是因为GC-config需要一些优化。请任何人根据以下数据建议GC-config优化。或者任何人都可以突出显示配置中的任何错误 下面是我的JVM配置 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresour

我的应用程序突然停止,我怀疑这可能是因为GC-config需要一些优化。请任何人根据以下数据建议GC-config优化。或者任何人都可以突出显示配置中的任何错误

下面是我的JVM配置

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djdk.tls.ephemeralDHKeySize=2048
-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027
-Xmx21g
-XX:+UseG1GC
-XX:G1HeapRegionSize=24m
-XX:MaxHeapFreeRatio=15
-XX:MinHeapFreeRatio=5
-XX:MaxMetaspaceSize=4g
-XX:+HeapDumpOnOutOfMemoryError
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
JVM的GC配置

运行JVM快照

下面是我可以在catalina.out中看到的GC日志

2021-03-09T14:17:38.146+0000: 414469.095: [GC pause (G1 Evacuation Pause) (young) 17G->4391M(21G), 0.4270906 secs]
2021-03-09T14:17:47.284+0000: 414478.233: [GC pause (G1 Evacuation Pause) (young) 5191M->4216M(21G), 0.0419201 secs]
2021-03-09T14:18:13.735+0000: 414504.685: [GC pause (G1 Evacuation Pause) (young) 8488M->4280M(21G), 0.2362999 secs]
2021-03-09T14:18:17.606+0000: 414508.556: [GC pause (G1 Evacuation Pause) (young) 5192M->4216M(21G), 0.0566793 secs]
2021-03-09T14:19:06.833+0000: 414557.782: [GC pause (G1 Evacuation Pause) (young) 16G->4468M(21G), 0.5860262 secs]
2021-03-09T14:19:09.187+0000: 414560.137: [GC pause (G1 Evacuation Pause) (young) 5188M->4240M(21G), 0.0593960 secs]
2021-03-09T14:19:12.975+0000: 414563.924: [GC pause (G1 Evacuation Pause) (young) 5232M->4248M(21G), 0.0568061 secs]
2021-03-09T14:19:17.050+0000: 414567.999: [GC pause (G1 Evacuation Pause) (young) 5224M->4236M(21G), 0.0536786 secs]
2021-03-09T14:20:00.026+0000: 414610.976: [GC pause (G1 Evacuation Pause) (young) 16G->4341M(21G), 0.2910220 secs]
2021-03-09T14:20:03.929+0000: 414614.879: [GC pause (G1 Evacuation Pause) (young) 5253M->4248M(21G), 0.0200452 secs]
2021-03-09T14:21:15.569+0000: 414686.518: [GC pause (G1 Evacuation Pause) (young) 16G->4384M(21G), 0.2412292 secs]
2021-03-09T14:21:21.669+0000: 414692.619: [GC pause (G1 Evacuation Pause) (young) 5248M->4315M(21G), 0.0272150 secs]
2021-03-09T14:21:29.186+0000: 414700.136: [GC pause (G1 Evacuation Pause) (young) 5275M->4327M(21G), 0.0342030 secs]
2021-03-09T14:21:36.497+0000: 414707.447: [GC pause (G1 Evacuation Pause) (young) 5446M->4369M(21G), 0.0316144 secs]
2021-03-09T14:21:47.786+0000: 414718.735: [GC pause (G1 Evacuation Pause) (young) 7545M->4505M(21G), 0.0613017 secs]
2021-03-09T14:22:01.761+0000: 414732.710: [GC pause (G1 Evacuation Pause) (young) 8137M->4492M(21G), 0.1868154 secs]
2021-03-09T14:22:32.992+0000: 414763.941: [GC pause (G1 Evacuation Pause) (young) 6868M->4436M(21G), 0.0370628 secs]
2021-03-09T14:24:36.637+0000: 414887.586: [GC pause (G1 Evacuation Pause) (young) 11G->4468M(21G), 0.1404537 secs]
2021-03-09T14:25:14.738+0000: 414925.687: [GC pause (G1 Evacuation Pause) (young) 14G->4580M(21G), 0.2439932 secs]
2021-03-09T14:25:17.695+0000: 414928.645: [GC pause (G1 Evacuation Pause) (young) 5364M->4453M(21G), 0.0548354 secs]
2021-03-09T14:34:47.921+0000: 415498.870: [GC pause (G1 Evacuation Pause) (young) 12G->4549M(21G), 0.3198289 secs]
2021-03-09T14:34:49.145+0000: 415500.094: [GC pause (G1 Evacuation Pause) (young) 5429M->4437M(21G), 0.0055575 secs]
2021-03-09T14:54:47.263+0000: 416698.212: [GC pause (G1 Evacuation Pause) (young) 14G->4459M(21G), 0.1181888 secs]

在我看来,您的最大堆大小似乎太大(在GC之后,只使用5GB到6GB)。尝试使用
-Xmx8G
运行“突然停止”是什么意思?JVM正在退出还是被杀死?在某些时期,您会产生大量的垃圾。对于从14:17:47到14:18:17的30秒时间段,没有什么可说的,然后在接下来的50秒时间段内突然生成15GB。同样值得研究的是,您是否可以在应用程序(例如对象池)中进行任何优化,而不是假设只需调优GC就可以了enough@Michael是正确的-没有多少应用程序会在2分钟内使用(并丢弃)12+GB。如果你能计算出它们是什么,并可能缓存,那么你就不需要那么多的RAM,节省CPU,并可能看到其他好处。。。例如,如果您有大量的
new StringBuffer().append(“A”)……toString()
,然后有一个
ThreadLocal
变量,您可以获得该变量(),并自动重置该变量,这样就可以节省内存分配……因此,您的GC已清除
10GB
(例如,从上一个日志条目中)在1/10秒内,你对此不满意吗?一般来说,这些数字对于应用程序生成的垃圾量来说非常非常有用。