请问,如果我有如下类:
public class ClassOne{
private List list=new Vector();
public void addToList(Object obj){
for(int i=1;i<=10000;i++){
list.add(object);
}
}
public void print(){
for(int i=0;i<list.size;i++)}
list.get(i);
}
}
}
现我要在客户端调用此类,并且,先ADD,再pri9nt,想查看在这个运行过程中,这个程序占用多少内存,CPU占多少?如何查看? 还有:
1)如何查看一个JAVA的WEB应用启动后,一直运行占多少内存和CPU?
2)如何查看类似于上面的小程序运行完后,是否还占着内存不放?CPU不放?能回答者,谢谢!高分!
以上实现,如有代码提供代码,或现有什么工具也可提供下名称!
public class ClassOne{
private List list=new Vector();
public void addToList(Object obj){
for(int i=1;i<=10000;i++){
list.add(object);
}
}
public void print(){
for(int i=0;i<list.size;i++)}
list.get(i);
}
}
}
现我要在客户端调用此类,并且,先ADD,再pri9nt,想查看在这个运行过程中,这个程序占用多少内存,CPU占多少?如何查看? 还有:
1)如何查看一个JAVA的WEB应用启动后,一直运行占多少内存和CPU?
2)如何查看类似于上面的小程序运行完后,是否还占着内存不放?CPU不放?能回答者,谢谢!高分!
以上实现,如有代码提供代码,或现有什么工具也可提供下名称!
如,我现查询某个表占用多少?我插入某个表的记录占用多少?
我本人用过jprofile,还不错。希望lz可以试试。
RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
Method m = os.getClass().getDeclaredMethod("getProcessCpuTime", new Class[0]);
m.setAccessible(true);
Long o = (Long)m.invoke(os, new Object[0]);得到,但是这个是返回累计使用时间,不是百分比。
需要先减上一次累计值再除以os.getAvailableProcessors();来得到百分比
但是这些都是获取当前JVM的信息,如果是需要得到远程JVM则需要利用
sun.tools.attach.WindowsAttachProvider等连接JVM再执行必要方法
heap.bin是生成的文件,
再用 jvisualvm.exe 工具,对生成的文件进行分析