gre*_*ren 10 java memory memory-management
我有一个java应用程序,使用时会占用大量内存,但是当程序没有被使用时,内存使用量不会下降.
有没有办法强制Java释放这个内存?因为当时不需要这个内存,我可以理解保留少量内存,但Java只保留它曾经使用过的所有内存.它也会在以后重用这个内存,但必须有一种方法可以强制Java在不需要时释放它.
System.gc不起作用.
正如评论中所指出的那样,当垃圾收集器处理对象时,它并不确定它会给系统提供内存.
也许Tuning Garbage Collection Outline为您的问题提供了解决方案:
默认情况下,JVM会在每个GC上增大或缩小堆,以使每个集合中的可用空间与活动对象的比率保持在指定范围内.
-XX:MinHeapFreeRatio
- 当一代中的可用空间百分比低于此值时,生成将扩展到满足此百分比.默认值为40-XX:MaxHeapFreeRatio
- 当一代中的可用空间百分比超过此值时,生成将缩小以满足此值.默认值为70
否则,如果您怀疑正在泄漏引用,则可以确定泄漏的对象是什么,对象和对象是监视JVisualVM(与标准SDK捆绑在一起的工具)中的堆.您可以通过此程序执行堆转储并获取对象内存消耗的直方图:
归档时间: |
|
查看次数: |
3339 次 |
最近记录: |