我需要找出 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] ------------------------------------------------------------------------
最佳答案
这里:
Final Memory: 43M/636M
43M
是 JVM 在构建结束时使用的内存,636M
是当前分配的内存(堆大小)。
但是这些信息不能给你峰值。
为什么使用的内存(43M
)不能算是峰值?
- 因为峰值可能发生在构建结束之前。
为什么不能将堆大小 (636M
) 视为峰值?
因为如果 GC 减少峰值和构建结束之间的堆大小,峰值可能优于堆大小。
对于在开始时执行密集任务然后执行较轻任务的非常长的构建可能就是这种情况。因为如果 GC 将堆大小增加到此值,峰值可能低于堆大小,但应用程序永远不需要消耗那么多内存。
要在 maven 构建执行期间获得内存峰值,请使用专为 JVisualVM 或 JConsole 设计的任何 JVM 工具监控 Java 应用程序(maven 执行)。
这是由 JVisualVM 监控的 Spring Boot 应用程序的 Maven 构建的屏幕截图,显示构建结束时堆大小或已用大小都不是峰值:
关于java - 如何在 Maven 构建中查找峰值内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418317/