所以,確實是非常簡單的問題。使用我的 RAM 有限的開發機器(8GB RAM、Win 7 x64、8GB 頁面檔案),當我用完可用 RAM 時,程式首先開始變慢,並最終崩潰。大多數時候 JVM 首先崩潰並且非常高興。這怎麼可能?就像根本沒有頁面檔案一樣,但是當我使用的 RAM 達到第 8 GB 時,JVM(有時還有其他程式)幾乎立即崩潰。
是的,我非常清楚主要由硬體實現的所有分頁機制,它們應該再次與頁面文件一起工作,就好像有足夠的 RAM 可用,對頁面文件正在使用甚至存在一無所知。那麼為什麼我實際上觀察到非常不同的行為呢?
答案1
您可以運行 jprofiler 並調查堆記憶體嗎?另外,尚不清楚執行中的 java 程式的記憶體需求。如果java程式正在創建大量執行緒並且執行緒沒有終止,那麼它可能會導致所有這些問題。請檢查 java 程式所建立的物件數量和執行緒性質。