[問題] gc()後,javaw.exe記憶體降不下來

看板java作者 (薯)時間5年前 (2019/09/19 12:52), 5年前編輯推噓3(302)
留言5則, 4人參與, 5年前最新討論串1/1
我同時使用下列兩個軟體來查看我程式對於記憶體使用的情況: 1.jconsole觀看 Heap Memory Usage 2.工作管理員的 javaw.exe 記憶體(私人工作集) 當我程式將Queue裡面的東西clear (大量的ImageView) (基本上那些東西在Queue clear之後就沒有指標指向它們) (但保險起見把相關的指標都設成null) 並且呼叫System.gc() 盡量在我的認知下不造成memory leak 從jconsole來看,Heap Memory Usage 從將近1GB慢慢降至100MB 但從工作管理員來看,javaw.exe的 記憶體(私人工作集) 始終維持在lifetime中歷史的最高值 (以這個例子來說是1.2G) 我想問以jconsole的結果來看,我有正確釋放記憶體嗎? 如果有的話,為什麼javaw.exe占用的記憶體卻沒有往下掉呢 請問這是我java程式有什麼致命的錯誤嗎? 還是這是作業系統的關係嗎? 雖然程式程式不會當掉 但如果使用者看到我占用1G以上的記憶體(而且還不會降下來) 應該就不會想用我的程式... 希望能夠幫我解惑,感謝 -- If a child on the street who has nothing is willing to share, why are we who have everything still so greedy? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.227.117 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/java/M.1568868738.A.C1B.html ※ 編輯: liu2007 (123.192.227.117 臺灣), 09/19/2019 12:53:55

09/19 16:58, 5年前 , 1F
jvm是不會聽話的
09/19 16:58, 1F

09/19 17:35, 5年前 , 2F
gc是對jvm來說空的heap增加,不代表jvm heap很空就要還給os
09/19 17:35, 2F

09/19 17:38, 5年前 , 3F
跟gc參數、collector、jvm版本都有關係,有需要你要去研究
09/19 17:38, 3F

09/20 13:09, 5年前 , 4F
試試不同的os
09/20 13:09, 4F

09/28 16:55, 5年前 , 5F
jvm allocate記憶體就不會放掉, 看程式耗用量要看heap
09/28 16:55, 5F
文章代碼(AID): #1TWmc2mR (java)
文章代碼(AID): #1TWmc2mR (java)