【发布时间】:2011-10-15 13:35:34
【问题描述】:
我想使用尽可能多的内存使用SoftReferences 编写缓存,只要它不会变得太低效。
试图通过计算对象大小或通过获取JVM 的一些已用内存近似值来估计已用大小是死胡同。
javadoc 甚至声明SoftReferences 对内存感知缓存有好处,但对于JVM 实现如何处理SoftReferences 没有硬性规定。我只是在谈论JVM(6.22 及更高版本和7 版)的Oracle 实现。
现在我的问题(请随意回答部分、分组或任何你喜欢的方式):
-
JVM是否考虑到对象的最后一次访问并且只删除旧的? Javadoc 状态:Virtual machine implementations are, however, encouraged to bias against clearing recently-created or recently-used soft references. - 当内存紧张时会发生什么?
JVM惊慌失措并吃掉所有对象? - 是否有一个参数告诉
JVM只吃多少才能生存(没有OOMEs)和健康地生活(没有CPU 只运行GC)
【问题讨论】:
标签: java garbage-collection soft-references g1gc