【发布时间】:2015-11-29 19:36:21
【问题描述】:
我是分析 Java 应用程序的新手,当我看到我的小应用程序可能占用 800MB 内存是整个操作系统的两倍并且经过一些用户交互后大约 450MB 时,我不确定。
所以我写了一些关于内存分配和 gc 工作原理的文章,似乎 JVM 尽了最大的努力,而且大多数情况下,你的应用程序不需要那么多内存来运行。
所以我测试了我可以在不使应用程序崩溃的情况下限制堆的多少,并在 -Xmx32MB 处停止测试。
令我惊讶的是,除了应用程序使用的内存减少了近 30 倍这一事实之外,没有明显的性能损失。
所以现在我想知道...
(1) ... 如果有任何限制堆的缺点?
(2) ... 如果限制堆是常见的,还是建议让 JVW 决定它需要和想要使用多少内存?
(3) ... 找出应用程序需要运行的最小内存大小的最佳方法是什么? (我只是感兴趣)
(4) ... 在限制堆时我是否会遇到性能损失?
提前谢谢你!
【问题讨论】:
标签: java performance profiling heap-memory