我發現如果我的應用程序有很多可用內存,它會使用比需要更多的內存。我聽說這種行爲在所有Java應用程序中都很常見,但對我來說這是不可接受的。Java降低內存使用率
所以問題是我如何強制Java使用更少的內存?
我知道,我可以叫System.gc()
每隔幾秒鐘手動,但它是正常的這樣做,還有沒有其他的方法呢?
P.S.我的應用程序在生產服務器上定期更新,我需要監視某些泄漏的內存使用情況等等(通常沒有泄漏,但是如果有人出現,我應該儘可能快地看到它),還需要預測時間當我應該升級我的硬件。如果jvm不可預測地改變記憶飢餓,所有這些事情都很難做到。所以我想的唯一一件事就是迫使JVM是在內存使用量預測的(如果用戶數量增加一倍的內存應該雙打太)
現在可能是時候重新思考它爲什麼不可接受了。你能給出一個技術上的理由,還是這會讓你感到不舒服? – 2012-02-03 11:02:21
也許你不應該在生產服務器上進行測試?只有當你知道沒有泄漏時才進行部署? – 2012-02-03 11:13:34
這不是一個測試,當然我也有測試服務器,但它運行的負載不同 – tsds 2012-02-03 11:16:00