Java进程仍在运行

Java进程仍在运行,java,linux,shell,jvm,Java,Linux,Shell,Jvm,我正在使用shell脚本中的一个方法来执行一个jar文件 function executeJar(){ java -cp $BASE_PATH"myjar.jar":$CLASSPATH/* com.sample.main.App config.json } 即使在jar完成执行之后,java进程仍然处于活动状态,不会被终止。我应该手动杀死它吗?解决这个问题的办法是什么 检查是否有任何资源仍处于打开状态(数据库连接、输入读取器、套接字等)。请确保.close()这些资源,或者使用尝试使用re

我正在使用shell脚本中的一个方法来执行一个jar文件

function executeJar(){
 java -cp $BASE_PATH"myjar.jar":$CLASSPATH/* com.sample.main.App config.json
}
即使在jar完成执行之后,java进程仍然处于活动状态,不会被终止。我应该手动杀死它吗?解决这个问题的办法是什么

  • 检查是否有任何资源仍处于打开状态(数据库连接、输入读取器、套接字等)。请确保
    .close()
    这些资源,或者使用尝试使用resources语句(它们会为您关闭)

  • 如果您使用的是线程,可能仍有一些线程在运行。或者,您使用的某些东西已经创建了线程(例如数据库连接池)。使用visualvm工具(它随每个JDK一起提供,只需在控制台上键入jvisualvm即可)。打开Visual VM,运行应用程序并确保它不会自动退出,在Visual VM的左侧面板上选择应用程序运行时,然后监视Visual VM上的线程选项卡。关闭应用程序并检查是否仍有任何东西在运行。

  • 如果您在Windows中运行,可能只有父进程(控制台)仍在运行。尝试使用javaw而不是java


  • 这是一个非常广泛的问题,并且缺少重要的信息,例如java应用程序的主要方法的片段。我怀疑您的程序很可能没有执行System.exit()来通知JVM停止(从而也生成退出代码)。请进一步细化这个问题。当您直接从命令行调用java程序时,它是否保持运行?