是否有可靠的方法在内存满之前清空缓存?或者根据当前可用的“实际”空闲内存(硬引用对象)更好地限制缓存?
由于高 GC 惩罚,软引用缓存不是一个好主意,一旦达到限制,所有缓存条目都需要重新加载。
此外runtime.freeMemory()
,对于我的目的,该值也不是那么可靠,因为即使它太低,在下一个 GC 周期之后可能会有足够的可用空间,因此它不能很好地指示实际使用的内存。
我试图弄清楚每个原始时间会消耗多少内存,因此我会知道缓存的实际内存使用情况并对其进行限制,但找不到可靠的方法来确定将使用多少内存来存储大小为 n 的字符串引用。