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命令中使用了哪些选项?