我的prod中的webApp(linus,tomcat 7.0.22)需要390 MB的内存,在本地环境中同样需要大约106 MB。我继续使用eclipse MAT来调查堆问题,但不明白为什么同一个应用程序会在产品中消耗如此巨大差异的内存?任何线索都会有所帮助。为什么JVM在生产中比本地主机多三倍内存?
1
A
回答
1
这种差异是微不足道的,对于正在运行的应用程序,几百兆字节仍然相当小。这里似乎没有问题。
2
粗略地说,Java应用程序总是使用大约与使用-Xmx分配给它的内存一样多的内存。在生产过程中,堆扩展到了这个限制,直到垃圾回收器开始执行。但是,这是JVM扩展或缩小堆空间时的规则的一种简化,它更复杂一些。
JIT将在生产中产生更多和更大的机器码。
因此,如果您只是在本地启动应用程序,并通过点击几次进行预热,就不会再有对象垃圾,从而使堆扩展。因为没有人经常使用它,所以没有必要对这些方法进行处理。
相关问题
- 1. 为什么ASP.NET页面在本地主机上比在生产服务器上慢得多
- 2. 流浪本地主机生产
- 3. 为什么请求[“主机”] ==“dev.testhost.com:1234”而Request.Url.Host ==“本地主机”
- 4. 从本地主机到本地主机的WebRequest:为什么它被拒绝?
- 5. 本地化在本地主机上运行,但不在生产环境中
- 6. 为什么hprof文件比给jvm的内存量要小得多
- 7. 为什么JVM的实际内存占用量比我的Xmx大得多?
- 8. 为什么jvm生成serialVersionUID?
- 9. 为什么在内存泄漏中只显示三个内存地址?
- 10. 为什么GDB中的一些内存地址比其他内存地址短?
- 11. 在生产上创建问题,但不在本地主机
- 12. 为什么芝麻限于150m三倍?
- 13. 为本地主机
- 14. 为什么通过产量比由xrange产生的发电机产生的发电机更快?
- 15. 设计登录在本地主机上而不是生产
- 16. 强制jvm返回本机内存
- 17. 在SPSS中产生多重比值比
- 18. 为什么在rails 3.1及更高版本中生成三个资产目录
- 19. PHP路径在本地主机上运行脚本翻倍
- 20. 为什么Glassfish在Linux中需要的内存比在Windows中要多得多?
- 21. 为什么CORS在使用'lvh.me'时适用于本地主机?
- 22. 为什么Unicorn不在本地主机上提供页面?
- 23. 为什么我的应用挂在本地主机上?
- 24. 为什么jQTouch不能在我的本地主机上工作?
- 25. 为什么document.all.item不能在本地主机上工作?
- 26. 为什么Ghost node_modules在openshift上比在本地上大得多?
- 27. JVM:什么时候JVM需要复制内存内容
- 28. 为什么www.prod.facebook.com作为本地主机打开?
- 29. 为什么比uint64快两倍?
- 30. 为什么php5.3.8比5.3.7慢10倍?
您确定确定您正在查看活动的RAM使用情况,而不是过程的缓存使用情况? Linux与RAM的工作方式不同于Windows。 – indivisible
在开发和生产服务器(操作系统,Java运行时,servlet容器,...)之间是否具有相同的配置?你也可能想配置你的jvm在崩溃时转储堆,以便为你提供适当的调查材料。 – ylabidi
一些更多的细节 - prod是Linux与tomcat 7.0.22。本地是在eclipse下运行tomcat的windows。现在我正在使用MAT查看堆转储,它显示了由对象使用的49 MB。仍然想知道如果Java对象只有49 MB,然后谁在休息? – Amit