我的Java EE应用程序出现问题,我现在看到堆转储,然后是使用WebSphere应用程序服务器的生产环境。此转储在类中的某个随机时间发生,它使用使用DLL文件生成某些报告的PDF生成库。这也导致JVM自动重启。
查看转储文件和native_stderr.log,似乎同时存在垃圾收集问题。有错误,如:
reason="insufficient time being spent in gc" gctimepercent="1"
此外,分段错误错误如下所示:
Unhandled exception Type=Segmentation error vmState=0x00000000
J9Generic_Signal_Number=00000004 ExceptionCode=c0000005 ExceptionAddress=7F030F32 ContextFlags=0001003f
Handler1=7F040D90 Handler2=7F0E7D70 InaccessibleAddress=35A13000
EDI=0CD776C8 ESI=35A13000 EAX=0004AEF8 EBX=24DB5500
ECX=00009FC6 EDX=0004AEF8
EIP=7F030F32 ESP=2C14FD5C EBP=2C14FDC4
Module=E:\u01\was61\java\jre\bin\j9vm23.dll
Module_base_address=7F020000 Offset_in_DLL=00010f32
Target=2_30_20090224_30451_lHdSMr (Windows Server 2003 5.2 build 3790 Service Pack 2)
CPU=x86 (4 logical CPUs) (0x1fff37000 RAM)
JVMDUMP006I Processing Dump Event "gpf", detail "" - Please Wait.
JVMDUMP007I JVM Requesting System Dump using 'E:\data\servers\MyApp\workdir\core.20120103.101629.9812.0001.dmp'
JVMDUMP010I System Dump written to E:\data\servers\MyApp\workdir\core.20120103.101629.9812.0001.dmp
JVMDUMP007I JVM Requesting Snap Dump using 'E:\data\servers\MyApp\workdir\Snap.20120103.101629.9812.0002.trc'
JVMDUMP010I Snap Dump written to E:\data\servers\MyApp\workdir\Snap.20120103.101629.9812.0002.trc
JVMDUMP007I JVM Requesting Java Dump using 'E:\data\servers\MyApp\workdir\javacore.20120103.101629.9812.0003.txt'
JVMDUMP010I Java Dump written to E:\data\servers\MyApp\workdir\javacore.20120103.101629.9812.0003.txt
JVMDUMP013I Processed Dump Event "gpf", detail "".
堆转储表明转储的原因是" gpf"并讨论分段错误。
我正在尝试在我的本地环境中重现相同但没有任何成功。我试图做的是通过在我尝试生成报告时设置一些参数来强制进行某种频繁的垃圾收集。我可以在Websphere管理控制台中设置哪些奇怪的参数,以便更频繁地执行GC?
答案 0 :(得分:3)
GC问题(在GC中没有足够的时间)是一个红鲱鱼。它只是意味着你的堆比它需要的更大,JVM可能会减少这个数量。
但是,GPF很严重 - 这是内部JVM崩溃。请更新到IBM Java 5 JVM的最新服务级别(您运行的是旧版本),如果不能解决问题,请将问题报告给IBM支持人员。