2012-08-10 84 views
1

我的應用程序具有生成圖像(jpg)的功能,它使用了大量的堆空間(在主機服務器上允許使用)。他們有什麼辦法可以讓它使用更少的堆內存。我的意思是,就像我們的電腦在RAM滿了時使用虛擬內存一樣。他們有什麼辦法讓java將外部存儲器用作虛擬堆空間?Java虛擬堆空間

+0

像閃存一樣嗎? – 2012-08-10 11:18:36

+0

@tuğrulbüyükışık:http://en.wikipedia.org/wiki/Secondary_memory#Secondary_storage – m0skit0 2012-08-10 11:20:06

+0

java可以用作虛擬堆的任何內存.. 它可能是RAM,輔助內存..等等。 – JAVAGeek 2012-08-10 11:20:51

回答

4

從技術上講,沒有。這取決於操作系統(請檢查Michael Wiles的答案)。一般來說,是的:一旦你生成一個JPG,不再使用立即,寫入磁盤並銷燬代表它的對象(保存其數據)。這比較慢,但會使用更少的RAM。

+0

但是單獨的圖像生成需要很多內存....我已經嘗試了你的建議.. – JAVAGeek 2012-08-10 11:22:19

+1

必須是一個**巨大的** JPG然後,或者你做錯了什麼......無論如何,同樣的想法仍然適用:在零件中進行圖像生成,並將每個零件寫入磁盤,而不是全部放在RAM中。完成後,組裝零件。 – m0skit0 2012-08-10 11:23:33

1

只需使用-Xmx4g或其他東西運行java應用程序。這將允許java vm使用4個ram而不管系統有多少ram。當Java虛擬機要求的內存多於RAM可用時,主機操作系統將提供內存作爲虛擬內存。

+0

我不是說.....我想虛擬化Java堆空間..我只能使用64MB的堆..不管有多少RAM可用。 – JAVAGeek 2012-08-10 11:24:48