我有一个在一个框上运行四个实例的WebSphere门户应用程序,在运行时间大约7天后,本机内存中只有130-150MB的地址空间(使用PMAP)。在另外7-10天内的某个地方,该图远低于100MB(我们认为这是危险的,我们开始回收JVM)。如果我们不进行回收利用,JVM最终将使用Sigsegv信号崩溃。

我们已经对班级计数和JIT代码的大小进行了一些初步调查。班级的数量增长,但从50k开始缓慢...每天大约几百。 JITC尺寸在7天后达到约210 MB,此后每天生长约1 MB。在我们以前的经验中,我们并不认为这些是险恶的价值观。

我们需要分解本机堆中的内容,无论是线程(所有线程计数看起来正常,我们都有固定的线程池),字符串池,常数池,字节码或其他任何内容。

我们现在正在尝试的一个领导是将反射阈值降低到0(关闭反射性创建类的字节码登录器)。该应用程序使用大量的切入点和很多反思,因此我们希望这很有可能有所帮助。

欢迎任何建议。

有帮助吗?

解决方案 2

经过冗长的调查,这最终成为一个网络漏洞: PK72252:呼叫classLoader.getResourceasstream很慢. 。固定在 6.0.2.33.

其他提示

可能是来回的,但是GC是否记录并确保它不会随着时间的推移而生长?看着你的珀斯空间? sigsegv是一个有趣的事情,我希望任何jvm iN-java内存问题都会发生更多的JVM崩溃。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top