高分求:如何测试一个JAVA系统(或一个JAVA类)在执行时占用内存大小和CPU率?

makesunsea 2011-01-16 11:20:35
请问,如果我有如下类:
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不放?

能回答者,谢谢!高分!


以上实现,如有代码提供代码,或现有什么工具也可提供下名称!
...全文
414 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lu_kay 2011-03-10
  • 打赏
  • 举报
回复
先执行这个命令 jmap -dump:live,format=b,file=heap.bin 8436(PID)
heap.bin是生成的文件,
再用 jvisualvm.exe 工具,对生成的文件进行分析
ChDw 2011-01-27
  • 打赏
  • 举报
回复
占用内存可以用Runtime.getRuntime().totalMemory() - freeMemory()来得到



占用CPU可以用:
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再执行必要方法
orange620 2011-01-27
  • 打赏
  • 举报
回复
用VisualVM啊。。这个能满足你的需求。。jdk1.6.0_12\bin\jvisualvm.exe是jdk自带的。
SNOOPY369 2011-01-27
  • 打赏
  • 举报
回复
如果不知道怎么下载jprofile,直接用NetBeans,SUN的Java IDE,里面有Jprofile,SUN网站有怎么使用,可以看每个Method的执行时间,内存,CPU占用等很多信息
plutowang 2011-01-26
  • 打赏
  • 举报
回复
留着,虽然现在没用到
rexuenaner929 2011-01-26
  • 打赏
  • 举报
回复
回复一下,留着这个帖子,以防以后找不到了
iyan84 2011-01-26
  • 打赏
  • 举报
回复
jconsole ,这个可以看看,google,baidu下一大堆
O溺水的鱼0 2011-01-24
  • 打赏
  • 举报
回复
顶起,本人也有这个需求。
keven_2008 2011-01-22
  • 打赏
  • 举报
回复
jprofiler可以。顺便mark下。
lumpen 2011-01-22
  • 打赏
  • 举报
回复
赞3楼的命令行
我本人用过jprofile,还不错。希望lz可以试试。
makesunsea 2011-01-22
  • 打赏
  • 举报
回复
但有没有办法查看,如:我增加一个功能,然后看这个功能各切面代码(如services)占多少内存和CPU这样的?而且希望在运行时?
如,我现查询某个表占用多少?我插入某个表的记录占用多少?
makesunsea 2011-01-22
  • 打赏
  • 举报
回复
很好!谢谢!
  • 打赏
  • 举报
回复
运行时加个参数,在 Linux 下可以用 ps 命令找到:

java -Dmodule=application_name xxx.xxx.xx.Xxxx

ps xo pid,%cpu,vsz,rsz,command | grep module=application_name | grep -v grep | | awk '{print $1","$2","$3/1024","$4/1024}')
chenkezhi 2011-01-18
  • 打赏
  • 举报
回复
如果是web应用,有一个probe的开源项目,把这个项目放到webapp下,就可以查看相应的东东了。在浏览器中看哈。
heardy 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bao110908 的回复:]
运行时加个参数,在 Linux 下可以用 ps 命令找到:

java -Dmodule=application_name xxx.xxx.xx.Xxxx


Java code
ps xo pid,%cpu,vsz,rsz,command | grep module=application_name | grep -v grep | | awk '{print $1","$2","$……
[/Quote]

火龙果犀利哈。。。
clarck_913 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bao110908 的回复:]

运行时加个参数,在 Linux 下可以用 ps 命令找到:

java -Dmodule=application_name xxx.xxx.xx.Xxxx

ps xo pid,%cpu,vsz,rsz,command | grep module=application_name | grep -v grep | | awk '{print $1","$2","$3/1024","$4/1024}')
[/Quote]

这个帖子一定要留个名
XinSzeto 2011-01-16
  • 打赏
  • 举报
回复
Xp自带的任务管理器不可以么?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧