Java进程仍在运行

时间:2018-04-16 19:13:35

标签: java linux shell jvm

我在shell脚本中使用方法来执行jar文件。

function executeJar(){
 java -cp $BASE_PATH"myjar.jar":$CLASSPATH/* com.sample.main.App config.json
}

即使在jar完成执行之后,java进程仍处于活动状态并且不会被杀死。我应该手动杀死它吗?什么是解决方案。

1 个答案:

答案 0 :(得分:0)

  1. 检查是否还有资源打开(数据库连接,输入阅读器,套接字等)。请务必.close()这些资源或使用 try-with-resources 语句(他们为您关闭)

  2. 如果你正在使用线程,也许还有一些线程正在运行。或者也许您使用的东西有reated线程(例如数据库连接池)。使用 Visual VM 工具(它随每个JDK一起提供,只需在控制台上键入jvisualvm)。打开Visual VM,运行您的应用程序并确保它不会自动退出,在Visual VM的左侧面板中选择您的应用程序运行时,然后监视Visual VM上的线程选项卡。关闭您的应用并检查是否还有任何正在运行的内容。 https://docs.oracle.com/javase/7/docs/technotes/guides/visualvm/threads.html

  3. 如果您在Windows中运行,可能它只是仍在运行的父进程(控制台)。尝试使用 javaw 而不是 java Difference between java/javaw/javaws