java defunct产生的原因和解决办法:
在很多时候,我们启动JAVA进程后,如果退出这个JAVA进程,在系统进程中仍然可以看到这个进程.
这种情况一般出现在UNIX/LINUX系统,对于WIN平台出现情况较少.
这个进程在UNIX平台上,你即使kill进程号也不能杀掉它,但它仍然占用系统资源,成了真正的"僵尸"。
产生的原因:
以前我们下载JDK时,可以下载到JDK的SRC然后自己编译,现在的官方网站上已经找不到可以自己编
译的JDK包,下载回来的JDK都是释放包,我们可以想象,无论SUN在发布JDK时考虑得如何完美,本地
库都不可能完全和当前系统的版本号完全一致。举个例子,假如System.gc()调用了本地库glic6.0.2.so
那么在当前系统上没有这个版本的库或没有这个版本的库的链结,那么gc()方法肯定不能正确工作。
当然sun在发布的时候可能会把这个本地库打包在JDK发行包中,但glic6.0.2.so中又调用了其它库,如
subglic6.0.21.so,即使系统中存在完全相同的glic6.0.2.so,但你无法确认它调用的库又完全匹配,
事实上这几乎是不可能完全匹配的。
正是这样本地库版本号的不一致,才使得需要调用本地库的JVM底层功能不能正确工作,所以清除,
退出进程等工作就可能无法完成,产生了java defunct。
知道了问题的原因,就能从多方面解决了。如果我们的JDK的src版进行编译安装而不是用SUN提供好的
本地库,当然不会存在上面的问题,但现在好象已经不提供src编译安装的发布包了,所以指定内核版本
号,以便使它和JDK发布时使用的版本相一致,可以基本解决java defunct。
假如你不知道当前JDK的本地库是基于什么内核版本号发布的,一般来说,应该提供系统当前的内核版本号:
在Linux下,先查看当前的内核版本:
uname -r
2.4.21-4.EL
把主版本号COPY下来,调用:
LD_ASSUME_KERNEL=2.4.21-4
export LD_ASSUME_KERNEL
如果你知道某个版本的JDK中的本地库是基于某个内核版本发而布的那你可以直接指定LD_ASSUME_KERNEL为
这个版本,这样会获得最大的一致性
分享到:
相关推荐
DEFUNCT
参考文章如何杀死defunct进程(译)首先是通过下面的命令找到父进程的PID输出结果为:其中:如果你使用命令 “kill -9 40428” 尝试杀死 ID
$ npm install defunct 示例用法 var d = require ( 'defunct' ) ; it ( 'should be able to multiply' , function ( t ) { var mul = d . mul ( 10 ) ; t . equal ( mul ( 5 ) , 50 , 'multiply' ) t . end ( )...
[已停产] 合成化学家的研究工具 - 档案、演示、分子建模、从头计算。
Pubpatterns API API已关闭。 不再维护。
在 unix 或 unix-like 的系统中,当一...On Unix and Unix-like computer operating systems, a zombie process or defunct process is a process that has completed execution (via the exit system call) but still
TallyMan在2000年被废弃。TallyMan是功能齐全的,高度可定制的商业和站点管理系统。 100%纯Perl / Embperl。
已失效
我启动DevPost就是为了解决这个问题,但这只是因为我不知道那里有一些非常好的工具可以做到这一点,例如上面提到的浏览器同步。 由于我宁愿没有的案例,因此我选择中止开发DevPost以便推荐浏览器同步。 DevPost...
该项目已将名称更改为“ Surfraw”,请参见http://surfraw.sourceforge.net。
模板标量并行多模式推荐该推荐器旨在考虑广泛的用户行为,项目内容和上下文信息,以提供实时推荐。... 它还可以几种方式混合基于内容的建议,以增强协作过滤并考虑重要的上下文。 它作为模板提供,以方便安装和应用程序...
土拨鼠基于 Theano 的神经网络框架。 Marmot 旨在使实现自定义架构变得非常容易。 它针对 GPU 上的快速训练进行了优化。 特征: 前馈和循环网络具有各种学习率策略的 SGD 目前只修复了 LR 和 Adadelta,但很容易添加...
引擎 Engine 是驱动 Go web 框架的核心,具有路由、上下文、http 状态等,以弥合 Go 标准库和您自己的 web 框架之间的距离。
船队 Go 中的基本且可扩展的 Web 框架。
该仓库现已关闭我们已决定合并到Dat增强提案( )流程中。Dat协议Web规格Web浏览器中Dat协议的规范。 状态:刚刚开始! 此存储库中的规范仍在进行中。动机现在有多种浏览器计划实施Dat协议:因此,此存储库将: 记录...
provide open source cell phones, most of them largely defunct, ranging from the Openmoko Neo FreeRunner to QT Embedded, Moblin, LiMo, Debian Mobile, Maemo, Firefox OS, and Ubuntu Mobile to the open ...
This is the same repository as the now-defunct official GitHub Android app. What's going on here? > What happened to the old app? GitHub didn't want to maintain the app anymore, so it's been released ...
#This is a defunct repo, 该项目已移至 ####我们决定将项目转向另一个方向,所以请加入我们! ====== 使命宣言:我们的使命是为安卓用户提供最简单的解决方案,让他们与附近的其他安卓用户进行交流。 特征 发展...
Ubuntu Linux build on Travis Windows build on AppVeyor Introduction Arcemu is a World of Warcraft server package. Based on the popular Ascent project (defunct as of 2007) it aims to provide players ...