我已經用Java編寫了一個程序,用於檢測它運行的計算機何時閒置。當空閒時間被重置(換句話說,使用鼠標或鍵盤)時,程序鎖定計算機。該程序設計用於在計算機啓動時運行,並在打開機器時繼續運行。我的問題是,程序運行時間越長,程序佔用的空間越多。我沒有看到任何理由爲什麼它應該;沒有什麼像一個ArrayList被不斷添加的。該程序在內存中以每小時10兆字節「擴展」。有沒有我應該做的垃圾收集?Java程序越來越大
0
A
回答
0
嘗試將堆大小設置爲較低的值......然後垃圾收集器應該先踢入。不時手動撥打System.gc()
也應解決您的問題。如果一段時間後這會導致OutOfMemory異常和/或內存不斷增加,那麼您確實在某處存在內存泄漏。
1
這聽起來不像你甚至有問題。 10 MB真的不是那麼大。這可能是垃圾收集器根本沒有「決定」在一段時間內運行。您可以嘗試通過調用System.gc()直接調用GC,但是實際上,除非內存不足或出現性能問題,否則我不會太擔心。
0
只要程序使用new
運算符,運行時就會分配新內存,直到垃圾回收器決定是否回收可用空間時纔會釋放新內存。所以,即使你沒有通過添加一個永遠不會被清除的集合來「泄漏」內存,你仍然在使用內存,你的使用將隨着時間的推移而增長。
考慮消除對new
的調用(例如,通過重新使用現有對象)或調整JVM上的堆大小設置,以便在需要消耗內存時更頻繁地啓動垃圾回收器。
相關問題
- 1. Java越來越有序的子序列
- 2. java越來越硬盤序列
- 3. ActiveMQ ActiveMQ.Advisory.TempQueue越來越大
- 4. 堆內存越來越大
- 5. 流星:index.html越來越大
- 6. 的Java越來越元素
- 7. 越來越java包名
- 8. Java數組越來越多
- 9. 越來越構建一個FORTRAN程序
- 10. BerkeleyDB越來越胖,越來越慢
- 11. Python - main.py越來越大,需要封裝處理程序
- 12. 我的Java程序是越來越無法更新的Neo4j DB
- 13. 越來越
- 14. 越來越CursorIndexOutOfBoundsException
- 15. 越來越hibernate.QueryException,
- 16. 越來越
- 17. 越來越java.lang.NoSuchMethodError
- 18. 越來越
- 19. 越來越java.lang.classCastException:android.os.Bundle
- 20. 越來越以 '/'
- 21. 越來越java.lang.ArrayIndexOutOfBoundsException
- 22. 越來越org.springframework.web.bind.MissingServletRequestParameterException
- 23. 越來越
- 24. 我越來越
- 25. 越來越元
- 26. 防止ServiceReferences.ClientConfig變得越來越大
- 27. 爲什麼oracle臨時越來越大?
- 28. SQL事務日誌越來越大
- 29. C++越來越TwoRandomNumbers,最小和最大
- 30. 加入大表越來越慢
您是否嘗試過使用探查器來確定您的程序中哪些對象正在增長? JVisualVM是免費的,並且附帶JDK – 2015-03-31 15:44:29
我沒有;我會給你一個鏡頭... – KnightOfNi 2015-03-31 15:46:06
我想你是依靠一些本地電話。你確定所有的資源在不使用時都被釋放了嗎?你確定你沒有釋放它,而是一遍又一遍地調用同一個資源? – ortis 2015-03-31 15:50:05