在本文中,我们将带你了解Linux上查看和停止所有java进程在这篇文章中,我们将为您详细介绍Linux上查看和停止所有java进程的方方面面,并解答linux查看暂停的进程常见的疑惑,同时我们还将给
在本文中,我们将带你了解Linux上查看和停止所有java进程在这篇文章中,我们将为您详细介绍Linux上查看和停止所有java进程的方方面面,并解答linux查看暂停的进程常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的JavaFX:无法仅在Linux上查找或加载主类、Java如何获取当前进程ID以及所有Java进程的进程ID、Java获取当前进程ID以及所有Java进程的进程ID、JAVA进程 Linux CPU占用率分析方法。
本文目录一览:- Linux上查看和停止所有java进程(linux查看暂停的进程)
- JavaFX:无法仅在Linux上查找或加载主类
- Java如何获取当前进程ID以及所有Java进程的进程ID
- Java获取当前进程ID以及所有Java进程的进程ID
- JAVA进程 Linux CPU占用率分析方法
Linux上查看和停止所有java进程(linux查看暂停的进程)
Linux下查看和停止所有java进程
在Linux下查看所有java进程命令:ps -ef | grep java
停止所有java进程命令:pkill - 9 java
停止特定java进程命令:kill -9 java进程序号
JavaFX:无法仅在Linux上查找或加载主类
我使用Intellij Idea开发了一个使用Java(FX)的Windows程序,工作得很好,然后导出了工件(jar),而且在Windows上运行它(双击控制台并双击)都没有问题。
然后我把它复制到我的Ubuntu虚拟机,但它说
Error: Could not find or load main class sample.Main
这是清单:
Manifest-Version: 1.0 Main-Class: sample.Main
JAR文件结构如下所示:
Leiningenpath不能草率定位? (IntelliJ Clojure IDE)
使用IntelliJ IDE和Lua编程语言制作Corona应用程序
“选定的目录不适用于Lua SDK的家庭”?
是否可以使用系统控制台来显示输出?
请参阅IntelliJ IDEA运行configurationVM选项中的Windows环境variables
test.jar --- meta-inf --- --- MANIFEST.MF --- org --- --- json --- --- --- // json library --- sample --- --- Contacts.class --- --- Controller.class --- --- Main.class --- --- sample.fxml
Linux下的IntelliJ Idea,主类上没有这样的文件或目录
IDEA无法启动本地的glassfish服务器
如何修复Linux中的PHPStorm 10的字体渲染?
如何在Ubuntu上更新已经安装的IntelliJ IDEA?
以root用户身份从IntelliJ运行bash脚本
像Debian一样,Ubuntu为OpenJFX提供了一个独立的包(OpenJDK的JavaFX实现)。 为什么是这种情况,当JavaFX是JRE的一个组成部分 – 我不知道,但你的问题应该通过安装OpenJFX包来解决:
# aptitude install openjfx
(或使用任何其他软件包管理器),或使用Oracle的JRE。
Java如何获取当前进程ID以及所有Java进程的进程ID
本篇文章主要介绍了java如何获取当前进程id以及所有java进程的进程id,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
首先是获取当前Java运行的Java进程ID,这个是网上常见的,也就是Java程序自身将进程ID打印出来:
package com.test; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; public class Target { public static void main(String[] args) throws InterruptedException { System.out.println(getProcessID()); while(true) { Thread.sleep(10000); } } public static final int getProcessID() { RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean(); System.out.println(runtimeMXBean.getName()); return Integer.valueOf(runtimeMXBean.getName().split("@")[0]) .intValue(); } }
运行结果:
2896@PC-20150603VRPL 2896
ManagementFactory是一个在运行时管理和监控Java VM的工厂类,它能提供很多管理VM的静态接口,比RuntimeMXBean;
RuntimeMXBean是Java虚拟机的运行时管理接口.
立即学习“Java免费学习笔记(深入)”;
点击下载“修复打印机驱动工具”;
当前进程ID为2896。
但这种让Java进程自行打印ID的方式并不太好用,因为很多时候我们是需要在不修改代码另一个Java程序代码的情况下知道这个正在运行着的Java进程的ID,如果你也有这个需求,可以看一下下面的解决方法:
获取所有正在运行着的Java进程
package com.test; import java.util.HashSet; import java.util.Set; import sun.jvmstat.monitor.MonitoredHost; import sun.jvmstat.monitor.MonitoredVm; import sun.jvmstat.monitor.MonitoredVmUtil; import sun.jvmstat.monitor.VmIdentifier; public class ProcessID { public static void main(String[] args) throws Exception { // 获取监控主机 MonitoredHost local = MonitoredHost.getMonitoredHost("localhost"); // 取得所有在活动的虚拟机集合 Set<?> vmlist = new HashSet<Object>(local.activeVms()); // 遍历集合,输出PID和进程名 for(Object process : vmlist) { MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process)); // 获取类名 String processname = MonitoredVmUtil.mainClass(vm, true); System.out.println(process + " ------> " + processname); } } }
运行结果:
2752 ------> 5172 ------> com.test.Target 5308 ------> com.test.ProcessID
这样,就可以根据类名找到进程号了。
MonitoredHost等类位于${JAVA_HOME}/lib/tools.jar
下面是一个可以直接根据类找到对应Java进程ID的方法:
package com.test; import java.net.URISyntaxException; import java.util.HashSet; import java.util.Set; import sun.jvmstat.monitor.MonitorException; import sun.jvmstat.monitor.MonitoredHost; import sun.jvmstat.monitor.MonitoredVm; import sun.jvmstat.monitor.MonitoredVmUtil; import sun.jvmstat.monitor.VmIdentifier; public class ProcessID { public static void main(String[] args) throws Exception { int pid = getProcess(Target.class); System.out.println("PID: "+pid); } public static int getProcess(Class<?> cls) throws MonitorException, URISyntaxException { if(cls == null) { return -1; } // 获取监控主机 MonitoredHost local = MonitoredHost.getMonitoredHost("localhost"); // 取得所有在活动的虚拟机集合 Set<?> vmlist = new HashSet<Object>(local.activeVms()); // 遍历集合,输出PID和进程名 for(Object process : vmlist) { MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process)); // 获取类名 String processname = MonitoredVmUtil.mainClass(vm, true); if(cls.getName().equals(processname)) { return ((Integer)process).intValue(); } } return -1; } }
运行结果:
PID: 5172
源码位于我的Github项目aoptracer的com.test包里
以上就是Java如何获取当前进程ID以及所有Java进程的进程ID的详细内容,更多请关注php中文网其它相关文章!
Java获取当前进程ID以及所有Java进程的进程ID
Java获取当前进程ID以及所有Java进程的进程ID
首先是获取当前Java运行的Java进程ID,这个是网上常见的,也就是Java程序自身将进程ID打印出来:
package com.test;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class Target {
public static void main(String[] args) throws InterruptedException {
System.out.println(getProcessID());
while(true) {
Thread.sleep(10000);
}
}
public static final int getProcessID() {
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
System.out.println(runtimeMXBean.getName());
return Integer.valueOf(runtimeMXBean.getName().split("@")[0])
.intValue();
}
}
ManagementFactory是一个在运行时管理和监控Java VM的工厂类,它能提供很多管理VM的静态接口,比如RuntimeMXBean;
RuntimeMXBean是Java虚拟机的运行时管理接口.
获取所有正在运行着的Java进程
package com.test;
import java.util.HashSet;
import java.util.Set;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;
public class ProcessID {
public static void main(String[] args) throws Exception {
// 获取监控主机
MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
// 取得所有在活动的虚拟机集合
Set<?> vmlist = new HashSet<Object>(local.activeVms());
// 遍历集合,输出PID和进程名
for(Object process : vmlist) {
MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
// 获取类名
String processname = MonitoredVmUtil.mainClass(vm, true);
System.out.println(process + " ------> " + processname);
}
}
}
MonitoredHost等类位于${JAVA_HOME}/lib/tools.jar
_
运行结果:
2752 ------>
5172 ------> com.test.Target
5308 ------> com.test.ProcessID
直接根据类找到对应Java进程ID的方法
package com.test;
import java.net.URISyntaxException;
import java.util.HashSet;
import java.util.Set;
import sun.jvmstat.monitor.MonitorException;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;
public class ProcessID {
public static void main(String[] args) throws Exception {
int pid = getProcess(Target.class);
System.out.println("PID: "+pid);
}
public static int getProcess(Class<?> cls) throws MonitorException, URISyntaxException {
if(cls == null) {
return -1;
}
// 获取监控主机
MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
// 取得所有在活动的虚拟机集合
Set<?> vmlist = new HashSet<Object>(local.activeVms());
// 遍历集合,输出PID和进程名
for(Object process : vmlist) {
MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
// 获取类名
String processname = MonitoredVmUtil.mainClass(vm, true);
if(cls.getName().equals(processname)) {
return ((Integer)process).intValue();
}
}
return -1;
}
}
根据类名称找到对应Java进程ID的方法
package com.example.demo;
import sun.jvmstat.monitor.*;
import java.net.URISyntaxException;
import java.util.HashSet;
import java.util.Set;
public class ProcessID2 {
public static void main(String[] args) throws Exception {
int pid = getProcess("cn.usr.demo.DemoApplication");
System.out.println("PID: " + pid);
}
public static int getProcess(String cls) throws MonitorException, URISyntaxException {
if (cls == null) {
return -1;
}
// 获取监控主机
MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
// 取得所有在活动的虚拟机集合
Set<?> vmlist = new HashSet<Object>(local.activeVms());
// 遍历集合,输出PID和进程名
for (Object process : vmlist) {
MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
// 获取类名
String processname = MonitoredVmUtil.mainClass(vm, true);
if (cls.equals(processname)) {
return ((Integer) process).intValue();
}
}
return -1;
}
}
JAVA进程 Linux CPU占用率分析方法
1: 首先把JDK Linux版本上传到服务器上.2: 使用命令 jstack PID 命令打印出CPU占用过高进程的线程栈.
3: 使用top -H -p PID 命令查看对应进程是哪个线程占用CPU过高. 比如:
top - 17:23:50 up 12 days, 1:44, 8 users, load average: 4.85, 3.56, 3.76
Tasks: 556 total, 1 running, 555 sleeping, 0 stopped, 0 zombie
Cpu(s): 7.4%us, 4.4%sy, 0.4%ni, 71.6%id, 15.5%wa, 0.0%hi, 0.6%si, 0.0%st
Mem: 32072M total, 31972M used, 100M free, 265M buffers
Swap: 2047M total, 81M used, 1965M free, 23734M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17363 webserve 20 0 4475m 2.9g 10m R 54 9.4 163:29.84 java
16452 webserve 20 0 4475m 2.9g 10m S 6 9.4 6:03.00 java
11283 webserve 20 0 4475m 2.9g 10m S 2 9.4 7:21.35 java
11284 webserve 20 0 4475m 2.9g 10m S 2 9.4 7:21.41 java
11285 webserve 20 0 4475m 2.9g 10m S 2 9.4 7:20.89 java
比如上面信息就可以看到 17363 线程CPU使用较高, 把这个值转换为 16 进制, 然后在第2步打印的
线程栈中进行搜索, 就可以知道这个线程栈是做什么的了.
关于Linux上查看和停止所有java进程和linux查看暂停的进程的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于JavaFX:无法仅在Linux上查找或加载主类、Java如何获取当前进程ID以及所有Java进程的进程ID、Java获取当前进程ID以及所有Java进程的进程ID、JAVA进程 Linux CPU占用率分析方法等相关内容,可以在本站寻找。
本文标签: