如何在Maven构建中找到峰值内存使用率

Kas*_*iya 5 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] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

dav*_*xxx 8

这里 :

Final Memory: 43M/636M
Run Code Online (Sandbox Code Playgroud)

43M636M构建结束时JVM 使用的内存和当前分配的内存(堆大小)。
但是这些信息不能给您峰值。

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

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

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

  • 因为如果GC在峰值和构建结束之间减小了堆的大小,那么峰值可能会超过堆的大小。
    可能是一个很长的构建,在开始时执行密集的任务,然后执行较轻的任务。

  • 因为如果GC将堆大小增加到该值之前,则峰值可能小于堆大小,但是应用程序永远不需要消耗那么多的内存。

要在执行maven构建过程中获得最大的内存,请使用为JVisualVM或JConsole设计的任何JVM工具监视Java应用程序(maven执行)。

这是受JVisualVM监视的Spring Boot应用程序的Maven构建的屏幕截图,该屏幕截图显示了构建结束时的堆大小或使用的大小都不是峰值:

在此处输入图片说明