一个Java crash问题解决

简介: Java Crash

最近安卓同事在打包APK时出现,远程主机强迫关闭了一个现有的连接,报错后立即生成一个hs_err_pid14372.log,文件头如下:

A fatal error hasbeen detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION(0xc0000005) at pc=0x00000000e6ec5d78, pid=14372, tid=3020

JRE version:Java(TM) SE Runtime Environment (8.0_31-b13) (build 1.8.0_31-b13)

Java VM: JavaHotSpot(TM) 64-Bit Server VM (25.31-b07 mixed mode windows-amd64 compressedoops)

Problematic frame:

C 0x00000000e6ec5d78

Failed to writecore dump. Minidumps are not enabled by default on client versions of Windows

If you would liketo submit a bug report, please visit:

http://bugreport.java.com/bugreport/crash.jsp

--------------- T H R E A D ---------------

Currentthread (0x000000001d5b3800): JavaThread"ForkJoinPool.commonPool-worker-2" daemon [_thread_in_Java, id=3020,stack(0x0000000023750000,0x0000000023850000)]

根据关键信息:

EXCEPTION_ACCESS_VIOLATION和Problematic frame,这类错误一般是JVM的BUG或者JVM调用的本地代码问题。

Problematic frame下面一行有一个关键字 C,C代表Native C frame。

线程信息部分为当前线程信息,有一个关键字:_thread_in_Java,_thread_in_Java在官方文档解释为:线程被终端或者正在编译Java代码,与APK处于打包编译阶段相符。

经过确认,Android App使用的三方库在其他APP上不存在问题,排除调用第三方库问题,那么应该是JVM BUG。

在hs_err日志文件头部还有一个关键信息:JRE version:Java(TM) SE Runtime Environment (8.0_31-b13) (build 1.8.0_31-b13),使用的JDK版本你是8.0_31-b13。看来就是JVM BUG。

让Android同事将JDK更换为jdk-8u201-windows-x64解决问题。

目录
相关文章
|
4天前
|
Java 调度
Java线程的六种状态
Java线程有六种状态: 初始(NEW)、运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、超时等待(TIMED_WAITING)、终止(TERMINATED)。
13 1
|
4天前
|
存储 安全 Java
Java面试题:请解释Java内存模型(JMM)是什么,它如何保证线程安全?
Java面试题:请解释Java内存模型(JMM)是什么,它如何保证线程安全?
37 13
|
1天前
|
安全 Java 开发者
Java并发编程中的线程安全性与性能优化
在Java编程中,处理并发问题是至关重要的。本文探讨了Java中线程安全性的概念及其在性能优化中的重要性。通过深入分析多线程环境下的共享资源访问问题,结合常见的并发控制手段和性能优化技巧,帮助开发者更好地理解和应对Java程序中的并发挑战。 【7月更文挑战第14天】
|
1天前
|
监控 Java API
Java并发编程之线程池深度解析
【7月更文挑战第14天】在Java并发编程领域,线程池是提升性能、管理资源的关键工具。本文将深入探讨线程池的核心概念、内部工作原理以及如何有效使用线程池来处理并发任务,旨在为读者提供一套完整的线程池使用和优化策略。
|
4天前
|
缓存 安全 Java
Java中线程池如何管理?
【7月更文挑战第11天】Java中线程池如何管理?
9 2
|
4天前
|
安全 算法 Java
Java中线程安全怎么做?
【7月更文挑战第11天】Java中线程安全怎么做?
10 2
|
3天前
|
存储 安全 算法
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第72天】 在现代软件开发中,尤其是Java应用开发领域,并发编程是一个无法回避的重要话题。随着多核处理器的普及,合理利用并发机制对于提高软件性能、响应速度和资源利用率具有重要意义。本文旨在探讨Java并发编程的核心概念、线程安全的策略以及性能优化技巧,帮助开发者构建高效且可靠的并发应用。通过实例分析和理论阐述,我们将揭示在高并发环境下如何平衡线程安全与系统性能之间的关系,并提出一系列最佳实践方法。
|
4天前
|
监控 Java 调度
Java面试题:描述Java线程池的概念、用途及常见的线程池类型。介绍一下Java中的线程池有哪些优缺点
Java面试题:描述Java线程池的概念、用途及常见的线程池类型。介绍一下Java中的线程池有哪些优缺点
18 1
|
3天前
|
Java 调度
java中线程的6种状态
java中线程的6种状态
|
3天前
|
算法 Java 开发者
Java中的多线程编程技巧与实践
在现代软件开发中,多线程编程成为提升应用程序性能和响应能力的关键技术之一。本文将深入探讨Java语言中多线程编程的基础概念、常见问题及其解决方案,帮助开发者更好地理解和应用多线程技术。 【7月更文挑战第12天】
6 0