首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JVM开销太大

JVM开销太大
EN

Stack Overflow用户
提问于 2013-01-03 07:12:06
回答 1查看 2.2K关注 0票数 8

我在一台服务器上有内存问题。这是亚马逊的一个微实例,因此它的内存非常有限(空闲-m说是603MB)。所以我才开始

代码语言:javascript
运行
复制
-server -Xmx290m -Xms290m -XX:MaxPermSize=65m

然而,"java“进程占用了总内存的86%,即5.18亿内存。518-355 = 163 MB的间接费用。这看起来很可疑,尤其是考虑到:

  • 在另一个微实例上运行在另一个jvm版本上的类似应用程序没有这么大的开销
  • 相同的应用程序在本地运行只会产生40 MB的开销。在本地,它运行在Windows 7,64位。

问题服务器上的java版本是:

代码语言:javascript
运行
复制
java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (amzn-2.3.3.13.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

本地运行时与服务器上运行时之间的巨大差异使我排除了以下选项:应用程序中存在一些昂贵的堆外对象(例如字节缓冲区)(而且我无论如何都不使用这些对象)。我知道JVM的开销各不相同,但堆的1/2以上的开销听起来太大了。那么是什么原因造成了这种情况呢?或者这是一种正常的方式?

EN

回答 1

Stack Overflow用户

发布于 2013-01-03 16:28:35

选择GC可能会影响堆大小开销,因为每个GC方案必须留出一些内存来管理堆。而且,在这么小的VM上,您可能不会从64位中获益多少。32位jvm将占用更少的堆,即使使用默认情况下应该打开的CompressOOPS。因此,使用您最喜欢的垃圾收集器,选择一个为您提供最佳开销和延迟的垃圾收集器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14134536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档