如何在maven构建中找到峰值内存使用情况

时间:2017-07-31 14:14:02

标签: java maven

我需要找出maven版本的峰值内存使用情况,我可以依赖成功maven版本给出的最终输出。 43M是否表示maven版本期间的峰值内存使用量。提前谢谢。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.222 s
[INFO] Finished at: 2017-07-31T19:10:04+05:30
[INFO] Final Memory: 43M/636M
[INFO] ------------------------------------------------------------------------

1 个答案:

答案 0 :(得分:4)

这里:

Final Memory: 43M/636M

43M是构建结束时JVM使用的内存和636M当前分配的内存(堆大小)。
但是这些信息无法给你峰值。

为什么使用的内存(43M)不能被视为峰值?

  • 因为峰值可能在构建结束之前发生。

为什么堆大小(636M)不能被视为峰值?

  • 因为如果GC减少了构建的峰值和结束之间的堆大小,峰值可能会优于堆大小。
    很长一段时间的构建可能会在开始时执行密集型任务,然后执行较轻的任务。

  • 因为如果GC增加堆大小直到此值,峰值可能会低于堆大小,但应用程序永远不需要消耗尽可能多的内存。

要在执行maven构建期间获取内存峰值,请使用为JVisualVM或JConsole设计的任何JVM工具监视Java应用程序(maven执行)。

以下是JVisualVM监控的Spring Boot应用程序的maven构建的屏幕截图,显示堆大小或构建结束时使用的大小都不是峰值:

enter image description here