Ubicación del método erróneo
Cuando haya determinado el nivel de optimización más bajo en el que el compilador JIT o AOT debe compilar métodos para desencadenar la anomalía, puede averiguar qué parte del programa Java™ , cuando se compila, provoca la anomalía. A continuación, puede indicar al compilador que limite el método alternativo a un método, una clase o un paquete específicos, permitiendo al compilador compilar el resto del programa como lo hace normalmente. En caso de anomalías del compilador JIT, si se produce la anomalía con -Xjit:optLevel=noOpt, también puede indicar al compilador que no compile el método o los métodos que causan la anomalía.
Antes de empezar
Unhandled exception
Type=Segmentation error vmState=0x00000000
Target=2_30_20050520_01866_BHdSMr (Linux 2.4.21-27.0.2.EL)
CPU=s390x (2 logical CPUs) (0x7b6a8000 RAM)
J9Generic_Signal_Number=00000004 Signal_Number=0000000b Error_Value=4148bf20 Signal_Code=00000001
Handler1=00000100002ADB14 Handler2=00000100002F480C InaccessibleAddress=0000000000000000
gpr0=0000000000000006 gpr1=0000000000000006 gpr2=0000000000000000 gpr3=0000000000000006
gpr4=0000000000000001 gpr5=0000000080056808 gpr6=0000010002BCCA20 gpr7=0000000000000000
......
Compiled_method=java/security/AccessController.toArrayOfProtectionDomains([Ljava/lang/Object;
Ljava/security/AccessControlContext;)[Ljava/security/ProtectionDomain;- vmState=0x00000000
- Indica que el código que ha fallado no era código de tiempo de ejecución de la JVM.
- Module=orModule_base_address=
- No en la salida (podría estar vacía o ser cero) porque el código fue compilado por el JIT, y fuera de cualquier DLL o biblioteca.
Compiled_method=- Indica el método Java para el que se ha generado el código compilado.
Acerca de esta tarea
Procedimiento
Qué hacer a continuación
-Xjit:{java/lang/Math.max(II)I}(optLevel=warm,count=0)para compilar solo el método anómalo en un nivel de optimización de warm, pero compilar todos los demás métodos como de costumbre.noOpt, puede excluirlo de la compilación mediante el parámetro exclude={<method>}:-Xjit:exclude={java/lang/Math.max(II)I}-Xaot:exclude={java/lang/Math.max(II)I}Los métodos AOT se compilan sólo en el nivel de optimización de cold. Evitar la compilación AOT o la carga AOT es el mejor enfoque para estos métodos.
Los métodos AOT también se pueden invalidar en la memoria caché compartida para evitar la carga utilizando la subopción -Xshareclasses:invalidateAotMethods . Para obtener más información, consulte -Xshareclasses.