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.