【问题标题】:how many objects in the JVM are too many? [closed]JVM中有多少对象太多了? [关闭]
【发布时间】:2012-08-05 10:26:36
【问题描述】:

我有一台配备 Intel(R) Pentium(R) 4 CPU 2.53GHz 和 2 GB RAM 的旧 PC。我正在遍历 javax.mail.Message 实例,并且想知道内存使用的上限。

假设“常规”大小的消息,可以轻松加载多少条消息?几万,几十万?百万?

请只是寻找一些棒球场 WAG。

heap 是这样的:

run:
DEBUG: nntp: newsrc loading /home/thufir/.newsrc
DEBUG: nntp: newsrc load: 5 groups in 16ms
Aug 05, 2012 3:52:17 AM net.bounceme.dur.usenet.driver.FetchBean <init>
INFO: max 259522560
Aug 05, 2012 3:52:17 AM net.bounceme.dur.usenet.driver.FetchBean <init>
INFO: allocatedMemory 16252928
Aug 05, 2012 3:52:17 AM net.bounceme.dur.usenet.driver.FetchBean <init>
INFO: freeMemory 14160912
Aug 05, 2012 3:52:17 AM net.bounceme.dur.usenet.driver.FetchBean <init>
INFO: totalFreeMemory 257430544
Aug 05, 2012 3:52:17 AM net.bounceme.dur.usenet.driver.FetchBean <init>
INFO: useMemory 2092016

我是iterating 到Message,它们是使用GNU NNTP library 从本地Leafnode NNTP 服务器加载的。

检查消息的标头,然后在适当的时候使用 JPQL 将一些标头持久保存到数据库中。

顺便说一下,这是在 Ubuntu 11.10 GNOME 经典版上。

【问题讨论】:

  • 堆的内存大小是多少?因为您不能将整个 RAM 分配给 java 堆。
  • @BharatSinha 我用堆中的一些输出进行了更新。
  • 有多少对象无关紧要,但它们占用的内存很重要。如何解释你的应用程序是做什么的?也许可以进行一些优化。
  • @JamesPoulson 它们是来自 gmane.com 的非常普通的 Message 对象,大部分只是文本。有些可能有 JPEG,但那将是少数。
  • 鉴于您没有太多内存,我希望尽量减少对象的数量和大小。虽然 Java 可以处理数百万个对象,但它们会占用内存并为垃圾收集器带来开销。使用原语并尽量减少丢弃对象可以提高性能(就像升级硬件一样;)

标签: java optimization memory jvm jakarta-mail


【解决方案1】:

我会说这取决于您为 Java 虚拟机允许的堆内存空间。

您可以在堆空间上收听内存管理器通知。 如果进入超出状态,停止加载更多消息,将消息向下舍入到您想要的值,然后对结果进行分页。

【讨论】:

    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多