Java程序长时间运行时自动退出可能的原因

我有一个Java程序,启动了七个线程,这些线程都形如:

public void run() {
while (true) {
try {
......
} catch (Throwable t) {
t.printStackTrace();
}
}
}

但却经常跑着跑着,跑了几个小时后java退出,可能是哪些原因?

我猜测是我自己的代码或是我使用的库在哪里调用了System.exit(),但是我用程序将System.exit()hook住了,发现没有人调用这个函数。这个服务器只有我一个人在用,也不会有人kill。Java达人们帮忙想想,还有可能是什么原因?

答复:

如果是应用,一般有2个可能

1 JVM BUG,这个简单,升级你的JVM就好了

2 内存溢出,呵呵,我猜这个可能性最大。 你应该启动工具监控一下程序的内存使用情况, jconsole就行

时间: 2016-12-06

Java程序长时间运行时自动退出可能的原因的相关文章

mac-安装了xcode5.1,写了个程序,一运行就自动退出是什么原因?

问题描述 安装了xcode5.1,写了个程序,一运行就自动退出是什么原因? 虚拟机安装了mac10.9,安装了xcode5.1,写了个程序,一运行就自动退出是什么原因?是不是还要安装什么辅助软件?

连接池-关于Java服务长时间运行出现各种bug问题,可能运行几天没问题,但是运行十几天就会出现各种bug

问题描述 关于Java服务长时间运行出现各种bug问题,可能运行几天没问题,但是运行十几天就会出现各种bug 服务使用的是ScheduledThreadPoolExecuto定时任务,有使用到全局变量,数据库连接池使用的是c3p0,我感觉出现问题的原因可能就是这三个里哪个导致的,程序是没问题的,就是运行久了就出现各种问题了,而且很莫明奇妙,比如本来是好好的运行久了日志中的中文从那个时刻起往后全都乱码了.请问这是怎么回事? 定时任务: ScheduledThreadPoolExecutor boo

C#2005,调用dll,在调试状态下运行一切正常,但在打包安装后运行不正常,运行一会儿程序就死了或自动退出,请问原因?

问题描述 问题出题,请坛子里的朋友多多指教,谢谢! 解决方案 解决方案二:在调试状态下运行了两天,都是正常的,但在正式运行了一会儿就出现问题.(在同一台机器上测试有这个问题,也在很多机器上都试过,都存在这样的问题)

android 长时间运行导致程序奔溃

问题描述 android 长时间运行导致程序奔溃 偶发性bug,不知道哪里引起的错误,程序太大没办法贴出代码,请大神帮忙看看是哪里出错了可以给个提示.没调过这方面的bug,请大神教教方法 谢谢了 06-02 13:56:25.920: A/libc(15969): Fatal signal 6 (SIGABRT) at 0x00003e61 (code=-6), thread 15969 (.clov4r.ad.nil1) 06-02 13:56:26.030: I/DEBUG(107): **

程序奔溃-长时间运行程序出错问题

问题描述 长时间运行程序出错问题 写了一个C#的数据包解析上传的程序,主要逻辑是程序一直对某一端口进行监听(会有收集数据的硬件,并且端口号是手动输入),每当有数据来,就将数据经过xml文档格式进行解析出来,写入远程数据库.现在一直测试1周的情况下,会出现无法上传数据情况,那会用串口助手监听是有数据上传的.请问:如何解决? 解决方案 我以前碰到过这种情况,很可能是内存泄露,每次都有内存没释放,长时间积累就导致崩溃. 这是我用C++出现的情况,不知道对你有用没?

开发的程序在visual studio上没报错 要在PDA上运行时直接退出

问题描述 开发的程序在visualstudio上没报错要在PDA上运行时直接退出新手不知道是什么原因 解决方案 解决方案二:新手你好,就通过你现在给出的这句话纳德拉都不知道是什么原因解决方案三:你可以调试看看,设置断点之后,部署到PDA之后,在PDA上面运行你的程序,然后调试,不就清楚了吗?解决方案四:是不是开发的架构不对,PDA好像是WINCE吧

android-安卓登录一段时间为操作自动退出,怎么实现啊。

问题描述 安卓登录一段时间为操作自动退出,怎么实现啊. 大家好,我现在在学习安卓,现在要实现一个功能--用户登录编写的程序后一段时间未操作会自动退出.自己没有思路,希望大家提示一下. 解决方案 1.为所有的Activity定义一个基类BaseActivity,程序中的所有Activity都继承自这个基类. 2.重写BaseActivity的dispatchTouchEvent()方法,只要监听到此方法,表明用户操作,纪录这个时间. 3.写一个定时器Timer,每1秒检查一次当前系统时间上次操作的

MYSQL客户机程序4—在运行时获取连接参数

    6.5 客户机程序4-在运行时获取连接参数     现在我们有了容易修改的防止出现错误的连接代码,我们要了解一些如何做某些比使用NULL 连接参数更灵巧的事情,如在运行时允许用户指定一些值.客户机程序3由于固定连接参数方面的缺陷,要想更改那些值中的任何一个,都必须编辑源文件并重新编译.这十分不方便,特别是想使程序用于其他人时.在运行时指定连接参数的一个通用的方法是使用命令行选项.MySQL分发包中的程序接受两种形式的连接参数,如表6 - 1所示.    与标准的MySQL客户机程序一致,

怎么判断一个java程序是否在运行?感激不尽

问题描述 怎么判断一个java程序是否在运行?感激不尽 在写一个程序需要用到这个判断 .然而Runtime.getRuntime().exec(String s)检索进程树的方法 只能检测到exe进程 而我看了一下 java程序运行时 任务管理器中始终只有一个javaw.exe 这样就无法区别是那一个java程序在运行.不知还有别的办法能解决这个问题不,感激不尽! 解决方案 运行开始的时候创建个临时文件,运行结束删除,判断文件是否存在确定程序运行! 解决方案二: 那个程序是不是你写的,如果是,那