相信大家都用过Applet程序吧。
在网页中打开Applet程序时,打开java的控制台,
在控制台上按下g,控制台则会输出以下:
1.垃圾回收...完了
2.显示内存量23,360K(例子)  剩余容量:10,381K(例子)  (44%) ... 完了以上是我们手动可以控制,并记录下来内存的信息。现在我想要在程序中自己添加一个线程,
模拟以上操作,来定时的收集这些内存信息。
首先要执行一段代码,达到的效果要类似于在 java控制台 按下 g 的操作。然后再取得内存的信息。
谢谢各位了。另外,实现环境是jdk1.4。

解决方案 »

  1.   

    Runtime.getRuntime()
    可以获jvm内存信息,还能 gc ,其他我就不知道了。
      

  2.   

    谢谢你。
    System.gc();
    Runtime imp = Runtime.getRuntime();
    System.out.println(imp.maxMemory());

    System.out.println(imp.freeMemory());这种方法我实验了一下,
    与在控制台输入g相比,还是不准确的。
    但依然谢谢。人好少啊。汗~
      

  3.   

    System.gc();
    这个方法很不可控 你现在进行的回收动作 说不定要等半个小时后才执行
      

  4.   


    怎么会不准确呢,只是它打印出来的是字节数,你除以1024后勤部转换成K显示不就可以了吗? 除非你觉得maxMemory及freeMemory函数本身有问题啦.
      

  5.   

    可能的话,调查清楚控制台如何执行GC的(在命令行输入XX命令XX参数),然后在代码中用执行命令行执行该命令
      

  6.   

    去考虑jpda的相关接口吧。
    1.5之后的jdk使用到的统计信息基本都是通过jvmti来实现的,比较方便
      

  7.   

    如果统计可用内存百分比应该用 freeMemory/totalMemory 吧 
      

  8.   

    只要用1.4。我也汗啊。我去google了,方法都是 1.5以上的版本的。各位提供的意见我正在思考呢。谢谢了。另外:
    怎么得到使用内存量和剩余内存量?
    还有那个 44% 的数?
    用哪个方法 ?
      

  9.   

    OK了。MS问题已经解决了。剩下的我就自己来啦。谢谢楼上几位啦。新年快乐!因为我开始的时候用的就是Runtime.getRuntime()。但我在换算的时候,没有除以1024,
    我除以的是1000。我承认很丢脸啦!