由于Nutch1.0中,使用的插件机制,对每个插件是以conf为key缓存在ObjectCache中,其使用的是WeakHashMap,由于conf特意设计成符合WeakHashMap形式,所以每次根据conf查找插件时,都导致查找不到,会创建新的class和classload,正常情况下WeakHashMap种对象在gc的时候可以被回收,但是由于class和classload是存储在Perm区中,而处于Perm区中的对象,gc是不会去回收的,所以在sun的jdk中会出现Perm区内存泄露问题。解决方案就是不使用WeakHashMap而使用HashMap强引用,并不以conf作为key。
nutch中插件机制引起的内存问题
最新推荐文章于 2020-11-11 21:25:23 发布
Nutch 1.0使用WeakHashMap缓存插件导致Perm区内存泄漏问题,原因是每次查找插件时都会创建新的class和classload。解决方法是改用HashMap并调整缓存键。
9897

被折叠的 条评论
为什么被折叠?



