Java的jconsole工具中的CodeCache的问题
在这里请教下使用过jconsole工具的过来人,我知道该工具一共展示了5部分内存,在Non-Heap中有一个叫CodeCache的部分,显然这部分为非堆内存。
不知道这部分内存是指代java的哪部分内存?用于装什么的?如果该CodeCache溢出后会有什么后果?
实际上,本人是在压力测试一个Web项目时,最终将关注点落在CodeCache上,但能够查找的资料都没有提到CodeCache的问题。
我的Web项目内包含了一个爬虫,该爬虫是以压力测试的方式在爬取,所以导致Quartz的调度会不停的加载许多第三方框架的类进来。
不知道第三方框架的类是否就是在CodeCache之中? 另一个特征是,当我的CodeCache在达到max值后的50分钟左右时服务器才宕掉。
如果是CodeCache的原因,那为什么不是立即宕掉?或者是……当JVM的GC机制持续执行一段较长时间之后,监测到该CodeCache仍
为max状态,所以才报的Out of Memmory异常呢?
补充一下我的WEB服务器宕掉时的大概情况:
①除了Old Gen的使用为88%以外,第二高的为44%。因此我认为这些数据应该可以排除是JavaHeap导致的OOM。
②服务器的native Heap 本地内存尚未使用,使用率一直为0%,因为总的4G的物理内存尚且还有859M的空间供使用。
③PermGen的大小我设置为Xmx 512m,宕机时的Commit size为113M,因此不是因为PermGen的大小造成的溢出。
请解答的朋友们将重点放在第三方框架jar的加载位置和CodeCache上来,谢谢各位鼎力相助了!~
[ 本帖最后由 xingyu_liu 于 2010-8-20 20:15 编辑 ] |