2014-03-01 96 views
0

AWT緩衝圖像的Java堆大小使用估計

我可以計算出有多少堆內存此Image對象將AQUIRE,

BUfferedImage(W,H,TYPE) 

然後

總內存使用由它= W * H * 4

是沒有辦法,我可以估算內存使用

對於Excel試算表和一個簡單的XML文件,有多少內存,如果他們是特定大小的和/或包含具體的行/節點,他們需要什麼辦法?

感謝

回答

0

這不是一個簡單的問題。首先,您需要知道究竟是您想要衡量的內容。對於BufferedImage,您需要指定哪個TYPE,因爲每個像素所需的字節數取決於它。 對於Excel電子表格和XML文件,您需要指定要使用的庫。

事件然後,知道的唯一方法是通過測量。您可以進行多次測量並推斷 - 這並不保證是完全正確的,但會產生有用的估計值。

這些帖子說明了如何做到這一點:

最後的後,「在Java中,什麼是確定物體的大小的最佳方式?「只測量對象本身的大小,而不是它創建的對象圖形。

This external link標題爲Again about determining size of Java object在最後一篇文章中有一個解決方案的擴展,它估計了一個對象圖的大小。在這裏重現(這不是我的代碼複製)太長了,但鏈接從2007年開始存在,所以我相信它非常穩定。

+0

感謝您的回答,但我的問題是,當我打開excel文件,磁盤大小更大比39 MB和有200萬條記錄,我的Java運行時拋出一個OOM錯誤,就像在BUfferedImage中,我可以通過其他一些實用程序/代碼事先知道需要多少字節的內存來處理這個文件,如果這可用字節比進程繼續否則採取替代根。 – Mihir