`

linux java defunct 解决办法

    博客分类:
  • java
 
阅读更多


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为 
这个版本,这样会获得最大的一致性
分享到:
评论

相关推荐

    Linux系统中popen函数的缺陷与改造方案.pdf

    mypopen 函数的改造方案可以解决 popen 函数的两个致命的缺陷,从而提高 Linux 系统的可靠性和安全性。 在本文中,我们详细分析了 popen 函数的缺陷,并给出了改造方案。通过使用 mypopen 函数,可以确保 shell ...

    DEFUNCT

    标题“DEFUNCT”可能指的是一个已经废弃或者不再使用的字体或者设计项目。在IT行业中,"DEFUNCT"这个词常用于描述某个软件、服务或项目已经停止维护、更新或废弃的状态。在这里,结合“字体”这一标签,我们可以推断...

    ccc013#Study-Notes#如何杀死defunct进程1

    参考文章如何杀死defunct进程(译)首先是通过下面的命令找到父进程的PID输出结果为:其中:如果你使用命令 “kill -9 40428” 尝试杀死 ID

    Linux下Tomcat重新启动

    具体来说,我们可以使用 ps -ef|grep java 命令来检查 Tomcat 的进程。如果 Tomcat 还没有关闭,这个命令将显示 Tomcat 的进程信息。 如果 Tomcat 还没有关闭,我们可以使用 kill 命令来强制关闭 Tomcat。kill 命令...

    Linux下的进程状态

    7. **Z (Defunct or Zombie)**:僵尸状态。进程已经终止,但其父进程尚未调用`wait()`系统调用来清理子进程的资源。僵尸进程会占用一定的系统资源,但不消耗CPU时间。 #### 扩展状态标记 除了上述基本状态外,在...

    linux中的僵尸进程

    4. **PS命令显示**:使用`ps`命令查看进程时,僵尸进程会显示为“Z<”或“defunct”。 #### 四、如何避免僵尸进程 为了避免僵尸进程的产生,可以通过以下几种方式: 1. **调用`wait`或`waitpid`函数**:父进程...

    defunct:函数式辅助函数库

    $ 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 ( )...

    flotilla-defunct:一个基本且可扩展的 Go web 框架

    **Flotilla-Defunct: 一个基础且可扩展的 Go Web 框架** Flotilla-Defunct 是一个专为 Go 语言设计的 Web 开发框架,它旨在提供一个简单但强大的基础,用于构建高效、可维护的 Web 应用程序。作为一个已废弃的项目...

    defunct-开源

    标题“defunct-开源”可能指的是一个已停止维护或废弃的开源项目。在IT行业中,开源软件是指源代码可以自由查看、使用、修改和分发的软件。这种类型的软件通常由社区驱动,开发者们共同协作以改进代码和添加新功能。...

    python僵尸进程产生的原因

    在 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

    [defunct] Chemical Resource Kit-开源

    虽然它已经停止开发,但其遗留的资源仍然可以为那些寻找开源解决方案的化学家提供有价值的信息。"档案"部分可能包含了过去的项目案例和实验记录,"演示"则可能包括了演示如何使用软件进行特定化学计算或模拟的实例。...

    Surfaw (defunct, renamed to Surfraw)-开源

    4. **无依赖性**:作为纯命令行应用,Surfaw通常不会依赖于特定的图形环境,可以在各种操作系统上运行,包括Linux、Unix以及macOS等。 尽管Surfraw已经不再活跃并改名为Surfraw,但它在开源社区的历史中留下了独特...

    pubpatternsapi:PubPatterns REST API(DEFUNCT)

    PubPatterns REST API,尽管现在已经废弃,曾经是一个重要的工具,尤其对于那些关注出版业和数据交换标准的开发者。这个API基于Sinatra框架构建,一个轻量级的Ruby Web应用框架,使得开发RESTful服务变得简单而高效...

    TallyMan E-Commerce (defunct)-开源

    TallyMan在2000年被废弃。TallyMan是功能齐全的,高度可定制的商业和站点管理系统。 100%纯Perl / Embperl。

    devpost:[DEFUNCT]面向开发人员的小型Git感知Web服务器

    我启动DevPost就是为了解决这个问题,但这只是因为我不知道那里有一些非常好的工具可以做到这一点,例如上面提到的浏览器同步。 由于我宁愿没有的案例,因此我选择中止开发DevPost以便推荐浏览器同步。 DevPost...

    Marmot:[defunct] 基于 Theano 的神经网络框架

    土拨鼠基于 Theano 的神经网络框架。 Marmot 旨在使实现自定义架构变得非常容易。 它针对 GPU 上的快速训练进行了优化。 特征: 前馈和循环网络具有各种学习率策略的 SGD 目前只修复了 LR 和 Adadelta,但很容易添加...

    defunct-template-scala-parallel-universal-recommendation

    模板标量并行多模式推荐该推荐器旨在考虑广泛的用户行为,项目内容和上下文信息,以提供实时推荐。... 它还可以几种方式混合基于内容的建议,以增强协作过滤并考虑重要的上下文。 它作为模板提供,以方便安装和应用程序...

    engine-defunct:Engine 是驱动 Go web 框架的核心

    在 Go 语言中,开发 Web 应用程序时,我们经常使用各种框架来简化工作,提高效率。...本文将深入探讨 Engine 的核心功能及其在构建 Go Web 应用中的作用。 1. **Engine 的定义** ...Engine 作为框架的入口点,负责协调...

    杀不死的进程

    ### 杀不死的进程——MarsDaemon在Android中的应用与原理 #### 一、引言 在Android开发中,为了确保应用能够在特定时刻提供服务,例如接收特定的系统广播或维持即时通讯应用中的长连接,有时需要实现进程的“常驻”...

Global site tag (gtag.js) - Google Analytics