我一直在開發一個使用兩個框架的小型Java實用程序:Encog和Jetty爲網站提供神經網絡功能。爲什麼系統。 gc()似乎對某些JVM沒有影響
代碼「完成」了,它完成了它需要做的所有事情,但是我在內存使用方面遇到了一些問題。在我的開發機器上運行時,當應用程序正在執行操作(訓練神經網絡)時,內存使用量似乎在大約4MB和13MB之間波動,最多使用大約18MB。這是非常好的用法,我認爲這是由於我相當經常地調用System.GC()。我這樣做是因爲處理時間對我來說並不重要,但是內存使用情況確實如此。
因此,它在我的機器上工作正常,但只要我把它放到我們的服務器上(共享內存限制的unix主機),它使用大約19MB開始,並在上網時升至數百MB的內存使用量的東西。這些和我在測試中一樣。我相信,減少內存使用量的唯一方法是退出應用程序並重新啓動它。
我可以說的唯一區別就是它正在運行的Java虛擬機。我不知道這一點,我試圖找出這種方式的原因,但很多文檔假設了Java和虛擬機的豐富知識。是否有人可以幫忙解釋爲什麼會發生這種情況,或許有些事情可以阻止它。
我已經看過使用GCJ編譯應用程序,但我不知道這是我應該投入大量時間,是否會真正幫助。
感謝您的幫助!
- 更新:在Mac OS 10.6.3上開發和服務器上的Unix操作系統,但我不知道是什麼。 (服務器是WebFaction)
是您的開發環境Windows還是Linux? – 2010-07-08 16:06:44
在Mac OS 10.6上進行開發。對不起,我的意思是說這樣。 – danpalmer 2010-07-08 16:12:20