首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >垃圾收集:伊甸园空间很快就会被填满。这是因为内存泄漏吗?

垃圾收集:伊甸园空间很快就会被填满。这是因为内存泄漏吗?
EN

Stack Overflow用户
提问于 2011-08-05 14:44:41
回答 2查看 6.3K关注 0票数 2

在我们的prod服务器中,伊甸园空间正在迅速被填满,强制进行少量收集regularly.The下图显示了日志文件的GC分析。

http://imagebin.org/166489

下面列出了VM选项。

代码语言:javascript
复制
    <jvm-options>-XX:SurvivorRatio=6</jvm-options>
    <jvm-options>-XX:NewSize=1344m</jvm-options>
    <jvm-options>-XX:MaxNewSize=1344m</jvm-options>
    <jvm-options>-Xms3072m</jvm-options>
    <jvm-options>-Xmx3072m</jvm-options>
    <jvm-options>-XX:MaxPermSize=400m</jvm-options>
    <jvm-options>-XX:NewRatio=2</jvm-options>

这是由于内存泄漏造成的吗?

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2011-08-05 15:34:35

一个繁忙的应用程序每秒可能会产生大约1/2 GB的垃圾。在你的eden空间填满之前,这会给你2.5秒的垃圾时间。如果您创建的代码少于这个值,则说明您的应用程序不是很忙,或者代码效率较高。

如果您想减少产生的垃圾数量,我建议您使用VisualVM或YourKit之类的工具来分析应用程序。另一种选择是增加伊甸园空间。例如,我会从8G或16 of或1/3的内存开始。并在您的应用程序调优时减少它。

票数 2
EN

Stack Overflow用户

发布于 2011-08-05 16:28:32

这不是内存泄漏,而是您创建了许多临时对象。我遇到了一个问题,我们用3d点做了大量的计算,一个简单的实现为每个临时结果创建了一个新对象(这在C++中可能工作得很好),但它在垃圾中每秒生成千兆字节。在重写之后,为了尽可能多地重用对象,它的速度降到了20兆每秒。

你能做什么?如果是你的代码,试着用预期的目标大小预分配数组,列表和字符串缓冲区;避免字符串连接;重用ovject。如果你有很多框架代码和库,你只能试着调优eden空间;检查缩小它是否对你的情况有帮助(你会得到更多更快完成的GC事件,你需要衡量它是否有帮助)。

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

https://stackoverflow.com/questions/6952437

复制
相关文章

相似问题

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