我將jvm的xmx設置爲4 G,但運行一段時間後,當我使用top查看內存時,它顯示了使用12 G內存的過程。爲什麼xmx和top之間存在內存使用差異?
那麼xmx究竟是什麼意思?如果我想限制jvm內存爲4 G,應該怎麼做?
命令行:-server -Xms4g -Xmx4g
而另一個相關的問題:)
如果GC發生,那將不使用的年輕一代,不再被不可避免地釋放物體的空間JVM?或者其中一些留給下一個gc?
感謝
我將jvm的xmx設置爲4 G,但運行一段時間後,當我使用top查看內存時,它顯示了使用12 G內存的過程。爲什麼xmx和top之間存在內存使用差異?
那麼xmx究竟是什麼意思?如果我想限制jvm內存爲4 G,應該怎麼做?
命令行:-server -Xms4g -Xmx4g
而另一個相關的問題:)
如果GC發生,那將不使用的年輕一代,不再被不可避免地釋放物體的空間JVM?或者其中一些留給下一個gc?
感謝
-Xmx選項的JVM指定maximum size of the Java garbage collected heap
。它不會限制JVM使用的內存大小。由ps或top報告的進程的大小將包括 以及該進程使用的任何其他內存。下面 是不屬於垃圾收集堆中 的一部分,並且仍然是由該方法所需要的存儲器的一部分的事情例子:
+1我會添加直接的ByteBuffers和內存映射文件,這些文件可以很容易地在某些prorgams的GB中(甚至是100 GB)。 – 2012-08-12 19:27:27
您如何設置jvm的xmx等於4 G?從命令行?你能顯示你正在使用的確切命令行嗎? – assylias 2012-08-12 13:39:15
你可以嘗試使用pmap $ pid並查看使用情況。 – 2012-08-12 14:10:20
您可以使用JConsole來檢查實際的堆大小。還要檢查您的設置是否由JVM提取 – 2012-08-12 14:29:33