Windows任务管理器javaw.exe内存与Java Mission Control

时间:2015-05-06 20:30:11

标签: java memory garbage-collection

我正在使用我的Windows 7计算机开发一个Java应用程序,该计算机具有Java 8 Update 45.我注意到Windows任务管理器所说的应用程序使用的内存(通过javaw)存在很大差异。 exe Image),以及Eclipse Memory Analyzer / Java Mission Control报告的内容。

示例:Java Mission Control报告使用了150 MB的Java堆内存,而Windows表示用于javaw.exe的303 MB的工作集。我知道JVM本身,GC等可能有一些开销。

但我也看到它在做GC。在点击一下以使内存增长之后,JMC显示GC已执行并说使用了200 MB的堆。 Windows报告619 MB(它从未下降)。 Windows是否正确显示Java的内存使用情况?应用程序的某些东西会导致这种情况发生吗?

1 个答案:

答案 0 :(得分:4)

当JVM启动时,它会为堆分配一个连续的内存区域。这个内存可以懒惰地转换成实内存,但几乎不会被传递回操作系统。

堆只是JVM使用的一个内存区域。它可能对您来说最重要,但是当您的堆非常小时,与JVM使用的其他区域相比,它可能很小。这包括

  • 原生记忆,例如直接ByteBuffers。
  • GUI原生组件。
  • 共享库。
  • jar文件。
  • 元空间(或perm gen)
  • 线程堆栈记忆。
  

Windows是否正常显示Java的内存使用情况?

Windows显示所有使用的内存,而不仅仅是堆使用的部分。

  

应用程序的某些内容会导致这种情况发生吗?

Windows不知道您使用的最大堆大小有多少。

相关问题