【发布时间】:2017-12-18 14:32:03
【问题描述】:
为了防止出现OutOfMemoryError,我想创建一个代码,在存在超出可用 RAM 的危险时清除程序中的一些缓存。
当内存处于可用最大值的一定百分比时,我如何从代码内部检测到并能够做出反应?
【问题讨论】:
-
你不能/不应该。实现缓存时使用 SoftReference。
-
如何在缓存中使用软/弱引用,如果需要更多空间,垃圾收集器会自动清除它们?
-
检查空闲内存的部分问题在于,它只告诉你一个数字。您仍然不知道如何填充 JVM 内存部分的足够详细信息(可能会有很大不同,具体取决于您对垃圾收集器的选择和设置)。所以,你不知道你的特定瓶颈到底在哪里。因此,最好采用 Michael 和 Marco13 推荐的更简洁的设计。
-
@AskarIbragimov 对不起,如果你觉得我会给你贴上初级标签,那绝不是我的本意——我只是想问评论者,如果他们给一些规则之类的建议(“你不应该......”),也分享这种教条背后的推理
标签: java memory-management out-of-memory