2012-08-05 115 views
1

我有一臺帶有英特爾(R)奔騰(R)4 CPU 2.53GHz和2GB內存的舊PC。我通過javax.mail.Message實例進行迭代,並且想知道內存使用的上限。JVM中有多少個對象太多?

假設「規則」大小的消息,有多少可以輕鬆加載?十萬,幾十萬?百萬?

只是尋找一些棒球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 

我這是從本地Leafnode NNTP服務器使用GNU NNTP library加載iterating通過Message的。

檢查消息的標頭,然後在適當的情況下,使用JPQL將某些標頭持久保存到數據庫。順便說一句,這是關於Ubuntu 11.10的GNOME經典之作。

+0

你的堆的內存大小是多少?因爲你不能把整個RAM分配給java堆。 – SiB 2012-08-05 10:41:45

+0

@BharatSinha我更新了堆的一些輸出。 – Thufir 2012-08-05 10:54:45

+1

有多少對象應該不重要,但它們佔用的內存是多少。如何解釋你的應用程序做什麼?也許一些優化是可能的。 – 2012-08-05 10:58:10

回答

0

那麼我會說,它取決於您允許Java虛擬機的堆內存空間。

您可以在堆空間上收聽內存管理器通知。 如果在超出的狀態下輸入,請停止加載更多消息,將消息舍入爲您希望對結果進行分頁的值。