我的webApp in prod(linus,tomcat 7.0.22)占用390 MB内存,在本地环境中占用大约106 MB。我继续使用eclipse MAT调查堆问题,但不明白为什么同样的应用程序会在prod中消耗如此截然不同的内存?任何线索都会有所帮助。
答案 0 :(得分:2)
粗略地说,Java应用程序总是使用与使用-Xmx分配的内存一样多的内存。在生产中,堆扩展到该限制,直到垃圾收集器启动。但是,当JVM扩展或缩小堆空间时,这是一个非常简化的规则,这是一个更复杂的问题。
JIT将在生产中生产越来越大的机器代码。
因此,如果您只是在本地启动应用程序并通过几次单击来加热它,就不会有更多的对象垃圾,从而使堆扩展。并且没有必要JIT这些方法,因为没有人经常使用它。
答案 1 :(得分:1)
这种差异是微不足道的,对于正在运行的应用程序来说,几百兆字节仍然相当小。这里似乎没有问题。