jvm crash问题

stonegump 2012-05-05 09:04:54
Java通过JNI调用native的dll时,偶尔会crash,jvm直接退出,现在的问题是dll是别人的,无法修改,只能在java端做工作,最好能像捕获异常那样捕获这个crash。
简而言之,就是怎么才能把null传给PathDasher,但jvm不退出。


import sun.dc.pr.PathDasher;

public class Crash {
public static void main(String[] args) {
try {
new PathDasher(null);
} catch (Throwable e) {
//Does not work
System.err.println(e.getMessage());
e.printStackTrace();
}
}
}
...全文
150 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonegump 2012-05-07
  • 打赏
  • 举报
回复
两位说的都有道理,谢谢。
zqfddqr 2012-05-05
  • 打赏
  • 举报
回复
这个没整过把这个dll用别的语言再包装一下在那边处理
周靖峰 2012-05-05
  • 打赏
  • 举报
回复
好像没有解决方法,一般出现jvm crash肯定是访问不可访问的数据区导致的,正常的应用程序这样做都会当场崩溃的,jvm应该也不例外。否则程序不崩溃的话,操作系统就要崩溃了
下载前必看:https://pan.quark.cn/s/a53bd26b16c1 JVM(Java Virtual Machine)构成了Java程序执行的核心框架,其主要功能在于对字节码进行解释及执行。 然而,一旦JVM遭遇重大故障或不可恢复的异常情况,便有可能发生崩溃,并生成一份崩溃记录文件,该文件通常被命名为`hs_err_pid.log`。 本材料将详细阐释如何剖析此类崩溃记录文件以及必须关注的重要事项。 通过设定JVM的启动参数,我们能够调控崩溃记录的生成位置及其行为特征。 例如,使用`-XX:ErrorFile=/path/hs_error%p.log`参数可以设定错误记录的存储路径,其中`%p`将自动替换为当前进程的标识符。 在标准配置下,记录文件会保存在Java程序执行所在的目录中,并采用`hs_err_pid.log`作为文件名。 另一个关键参数是`-XX:OnError`,该参数赋予我们在JVM崩溃时运行特定指令的权限,例如,`pmap %p`指令用于展示进程的内存映射情况,而`gcore %p; dbx - %p`则用于创建核心转储并启动调试工具。 在Linux系统环境中,这些指令将在子进程中运行,因此需要留意内存分配策略,并可能需调整`/proc/sys/vm/overcommit_memory`参数以避免潜在的内存不足状况。 启用`-XX:+ShowMessageBoxOnError`参数后,若在Linux环境下JVM崩溃,系统将自动调用GDB进行剖析与调试,这一功能对于测试环境具有显著辅助作用。 JVM崩溃记录的关键构成部分包括:1. **错误信息概述**:此部分记录了致命性错误的描述内容,例如,`SIGSEGV (0xb)`表明遭遇了段错误,`p...

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧