AWT緩衝圖像的Java堆大小使用估計
我可以計算出有多少堆內存此Image對象將AQUIRE,
像
BUfferedImage(W,H,TYPE)
然後
總內存使用由它= W * H * 4
是沒有辦法,我可以估算內存使用
對於Excel試算表和一個簡單的XML文件,有多少內存,如果他們是特定大小的和/或包含具體的行/節點,他們需要什麼辦法?
感謝
AWT緩衝圖像的Java堆大小使用估計
我可以計算出有多少堆內存此Image對象將AQUIRE,
像
BUfferedImage(W,H,TYPE)
然後
總內存使用由它= W * H * 4
是沒有辦法,我可以估算內存使用
對於Excel試算表和一個簡單的XML文件,有多少內存,如果他們是特定大小的和/或包含具體的行/節點,他們需要什麼辦法?
感謝
您可以打開文件時監控應用,並得到感覺的估計未來配置:例如參見hpjmeter:https://h20392.www2.hp.com/portal/swdepot/displayProductInfo.do?productNumber=HPJMETER
這不是一個簡單的問題。首先,您需要知道究竟是您想要衡量的內容。對於BufferedImage
,您需要指定哪個TYPE,因爲每個像素所需的字節數取決於它。 對於Excel電子表格和XML文件,您需要指定要使用的庫。
事件然後,知道的唯一方法是通過測量。您可以進行多次測量並推斷 - 這並不保證是完全正確的,但會產生有用的估計值。
這些帖子說明了如何做到這一點:
最後的後,「在Java中,什麼是確定物體的大小的最佳方式?「只測量對象本身的大小,而不是它創建的對象圖形。
This external link標題爲Again about determining size of Java object在最後一篇文章中有一個解決方案的擴展,它估計了一個對象圖的大小。在這裏重現(這不是我的代碼複製)太長了,但鏈接從2007年開始存在,所以我相信它非常穩定。
感謝您的回答,但我的問題是,當我打開excel文件,磁盤大小更大比39 MB和有200萬條記錄,我的Java運行時拋出一個OOM錯誤,就像在BUfferedImage中,我可以通過其他一些實用程序/代碼事先知道需要多少字節的內存來處理這個文件,如果這可用字節比進程繼續否則採取替代根。 – Mihir
或jconsole:http://docs.oracle.com/javase/6/docs/technotes/tools/share/jconsole.html – robermann