Im好奇什么样的确切含义的"承诺"存储器是值时询问,从MemoryUsage类。这类解释它为"致力表示存量(按字节),保证是可供使用通过Java虚拟机。" 这是否意味着存在使用jvm过程,而不是提供给其他进程,直到它被释放,通过java过程,或者这是否意味着java过程将是成功的,如果它试图拨款高达这一数额的记忆?我意识到这可能是执行具体但是我只关心在热点。

有帮助吗?

解决方案

该致力大小的实际分配存储器,用尺寸是用于储存的实际数据(当时使用~=致力于它的时间为主要的GC和可能的日益增长的堆).最大尺寸是很难限制这堆可以成长的-如果它没有足够的JVM引发OutOfMemoryError.

如果存储器的承诺那么它肯定可以使用。此外,唯一的场合,当JVM将不能够提交更多的存储器(在一个现代化的OS)如果硬件的虚拟存储器。

所有这些尺寸只能告诉你堆的大小的区域。JVM有其他存储区域,以及(纹叠,JIT缓存,等等。) 堆区域通常是最大的,这大致相当于该过程的排放。

两个注:

  • 如果提交的尺寸不适合在的物理存储器,它的部分将是交换页的文件。这导致大减速期间的GC在这种情况下你会改善应用程序的性能通过减少堆大小。
  • 一些操作系统允许双重预定的记忆-你可以分配一样多你想要的,只要你不尝试使用它(忘记的操作系统就是-有人帮我)

其他提示

"这是否意味着内存正由jvm进程使用而不可用于其他进程“是正确的。因此它少于(或等于)操作系统看到的JVM进程所占用的内存量。

http://java.sun.com /j2se/1.5.0/docs/guide/management/jconsole.html (抱歉没有要链接的锚点)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top