假设我有Map<String,List<SomeObject>> someMap;
size()
范围从1到100(此size()
在程序的持续时间内保持不变,键也保持不变!)。但是,在我的程序中,与键关联的值会不断变化。
目前设置的方式是每次我需要更改someMap
的值时(请注意,每当我需要更改与一个键对应的值时,就会发生这种情况我还需要更改与每个键对应的值),我会用new HashMap<String,List<SomeObject>>()
覆盖旧地图,然后someMap.put(someString,listOfSomeObjects)
1
覆盖100
次。< / p>
我想知道如何最大限度地减少此程序产生的垃圾量?我知道我在这里有几个选择;我可以做我目前正在做的事情,或者我可以依赖清晰的功能(在HashMap
级别应用并重新put
List<SomeObject>
个实例进入,或在valueSet()
级别申请。
上下文是一个实时系统,可以阻止世界暂停(但我也不想为此购买特殊的JVM)。
答案 0 :(得分:1)
这里有很多变数,如果没有适当的分析,很难给出明确的答案,但总的来说,我会继续保持原样,因为:
在分析您的应用时,您应该尝试在年轻一代使用不同的GC算法。我很想看ParNew
,虽然它在技术上停止了世界,但它通常很快而且无关紧要。