我想通过java代码生成线程转储,我尝试使用ThreadMXBean,但我没有得到正确格式的线程转储,因为我们正在使用jstack命令.请任何人提供一些帮助..是他们的任何其他方式来获取线程转储...使用任何其他API ..我想要的线程转储的格式是 -
2015-08-06 05:51:15
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode):
"Attach Listener" daemon prio=10 tid=0x00007fdab805d800 nid=0x7a36 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"ajp-mco/127.168.121.120:8170-220" daemon prio=10 tid=0x00007fdaa056d000 nid=0x7961 runnable [0x00007fda8bb7a000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1114)
at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1196)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:436)
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:420)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
at java.lang.Thread.run(Thread.java:744)
Run Code Online (Sandbox Code Playgroud) 我正在编写一个Java应用程序,我使用Java GarbageCollectorMXBean
API定期(每5秒)获取一次收集计数.以下是我为完成任务而编写的程序.
import java.io.IOException;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.util.HashMap;
import java.util.Map;
import javax.management.MBeanServerConnection;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
public class JMXTest {
public static final String GC_NAME = "java.lang:name=MarkSweepCompact,type=GarbageCollector";
private static GarbageCollectorMXBean garbageCollectorMXBean;
private static JMXConnector jmxConnector;
private static MBeanServerConnection mbsc;
public static void main(String[] args) throws Exception {
String rmiHostname = "jmxserver";
String defaultUrl = "service:jmx:rmi:///jndi/rmi://" + rmiHostname + ":1999/jmxrmi";
JMXServiceURL jmxServiceURL = new JMXServiceURL(defaultUrl);
Map<String,Object> jmxCredentials = new HashMap<String,Object>();
String[] credentials = new String[]{"jmxusername", "jmxpassword"}; …
Run Code Online (Sandbox Code Playgroud) 我正在使用一些代码来使用Java监视Cpu负载.我在我的应用程序中使用以下代码来获取系统负载
public static double getCPULoad() {
OperatingSystemMXBean osMBean
= (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
double load = osMBean.getSystemLoadAverage();
return load;
}
Run Code Online (Sandbox Code Playgroud)
但是在Windows上它会返回一个负值(-1.0).有什么办法可以解决这个问题吗?