神秘的FrontCache
用jmap -histo的时候,发现堆内存中有很多奇怪的对象,其class name为
java.util.HashMap$FrontCache
跳转到HashMap的源码中,直接搜索FrontCache关键字,居然一无所获
在Google上搜索一番,发现了一篇博文,链接如下
http://developers-club.com/posts/172295/
其大意为:在JVM启动参数里加上AggressiveOpts选项,JVM会使用alt-rt.jar取代rt.jar
alt-rt.jar中的HashMap的实现中有FrontCache这个子类,其作用是创建一个相当大的Object数组cache[],当存入Map的key为Integer类型的时候,就把value放到cache[key]中,取的时候就直接从cache数组里取
这个东西只能在key为Integer类型时起到优化作用,而且会牺牲一些空间