2012-08-12 136 views
1

我將jvm的xmx設置爲4 G,但運行一段時間後,當我使用top查看內存時,它顯示了使用12 G內存的過程。爲什麼xmx和top之間存在內存使用差異?

那麼xmx究竟是什麼意思?如果我想限制jvm內存爲4 G,應該怎麼做?

命令行:-server -Xms4g -Xmx4g

而另一個相關的問題:)

如果GC發生,那將不使用的年輕一代,不再被不可避免地釋放物體的空間JVM?或者其中一些留給下一個gc?

感謝

+1

您如何設置jvm的xmx等於4 G?從命令行?你能顯示你正在使用的確切命令行嗎? – assylias 2012-08-12 13:39:15

+0

你可以嘗試使用pmap $ pid並查看使用情況。 – 2012-08-12 14:10:20

+0

您可以使用JConsole來檢查實際的堆大小。還要檢查您的設置是否由JVM提取 – 2012-08-12 14:29:33

回答

6

-Xmx選項的JVM指定maximum size of the Java garbage collected heap。它不會限制JVM使用的內存大小。由ps或top報告的進程的大小將包括 以及該進程使用的任何其他內存。下面 是不屬於垃圾收集堆中 的一部分,並且仍然是由該方法所需要的存儲器的一部分的事情例子:

  • 代碼來實現JVM
  • 的下數據結構手冊堆實施JVM
  • 堆棧的所有線程在系統(APP + JVM)
  • 緩存Java字節碼(對於庫和應用程序)
  • JIT編譯的機器代碼(庫和應用程序)
  • 所有加載類的靜態變量
+3

+1我會添加直接的ByteBuffers和內存映射文件,這些文件可以很容易地在某些prorgams的GB中(甚至是100 GB)。 – 2012-08-12 19:27:27

相關問題