繁体   English   中英

对JVM进行性能分析:已提交,已使用,已释放内存

[英]Profiling JVM: Committed vs Used vs free Memory

我正在使用JProfiler对部署到Jetty服务器的Java应用程序进行性能分析。

一段时间后,我得到了该内存遥测: 在此处输入图片说明

右侧是Windows Task Manager上此Java进程的总内存。

  1. 我看到JProfiler中的Committed Memory定期增加,尽管在大多数情况下,该内存中的大部分都是Free(绿色)。 为什么提交的内存会像这样增加?
  2. 在拍摄上图的时间点中,JProfiler中的“承诺的内存”显示为3.17GB,但Windows Task Manager显示的要高得多-4.2457 GB。 两者都显示出相同的记忆吗? 造成这种差异的原因可能是什么?

如果峰值内存使用量接近总的承诺内存大小,则只要您的-Xmx值允许,JVM就会增加承诺的内存(操作系统实际上已为该进程保留的内存)。

这有点像填充ArrayList。 当背衬阵列用尽时,它会以越来越大的步伐扩大,因此不必为每个插入物调整大小。

至于任务管理器和JVM的堆大小之间的差异,任务管理器中的内存总是大于堆大小,并且通常很难解释。 请参阅此处以了解不同措施的说明:

https://technet.microsoft.com/zh-CN/library/ff382715.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM