Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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 为什么在我进行堆转储后内存会下降?_Java_Garbage Collection_Heap Dump_Wildfly 9_Jmap - Fatal编程技术网

Java 为什么在我进行堆转储后内存会下降?

Java 为什么在我进行堆转储后内存会下降?,java,garbage-collection,heap-dump,wildfly-9,jmap,Java,Garbage Collection,Heap Dump,Wildfly 9,Jmap,我正在运行一个带有wildfly9的web应用程序,我已经分配了xgb的内存。在一段时间内,内存会积累起来,我运行jmap实用程序来收集堆转储以分析内存利用率 当我这样做时,java.exe消耗的内存从X下降到X-ygb。有时Y相当于内存的GBs 为什么会发生这种情况?如果这段内存被标记为要清除,为什么GC不清除它?在GC发生之前,它不会被“标记为要清除”。在进行堆转储之前会进行一次完全的垃圾收集。为什么在我不进行堆转储时不会发生完全GC?这取决于您使用的垃圾收集器。它没有发生是因为GC已经决定

我正在运行一个带有
wildfly9
的web应用程序,我已经分配了
xgb
的内存。在一段时间内,内存会积累起来,我运行
jmap
实用程序来收集堆转储以分析内存利用率

当我这样做时,
java.exe
消耗的内存从
X
下降到
X-ygb
。有时
Y
相当于内存的
GBs


为什么会发生这种情况?如果这段内存被标记为要清除,为什么GC不清除它?

在GC发生之前,它不会被“标记为要清除”。在进行堆转储之前会进行一次完全的垃圾收集。为什么在我不进行堆转储时不会发生完全GC?这取决于您使用的垃圾收集器。它没有发生是因为GC已经决定它不需要发生。明白了,但是如果没有GC发生,内存会变高,OOM就会发生。是否建议/可能手动启动完整GC?您在jmap命令中使用了哪些选项?