java内存回收问题疑问 帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:41:12
class Garbage
{
public static void main(String args[])
{

Runtime rt=Runtime.getRuntime();
System.out.println("Free /Total memory bites:"+rt.freeMemory()+"/ "+rt.totalMemory());

System.out.println(" program start");
System.out.println("Free /Total memory bites:"+rt.freeMemory()+"/ "+rt.totalMemory());
Garbage m1=new Garbage ();
Garbage m2=new Garbage ();
Garbage m3=new Garbage ();
Garbage m4=new Garbage ();
m4=null;
System.out.println(" After created");
System.out.println("Free /Total memory bites:"+rt.freeMemory()+"/ "+rt.totalMemory());
m1=null;
m2=null;
m3=null;
System.gc();
System.out.println(" at last");
System.out.println("Free /Total memory bites:"+rt.freeMemory()+"/ "+rt.totalMemory());

}
}

整个垃圾回收器

你这个Test类简直太小了,建立一个这样的test类虚拟机根本不需要什么内存,虚拟机都是经过千锤百炼的,已经优化的相当完美了,所以你要往狠里弄

这样,听我的,楼主加个大一点field
像这样
private byte[] b = new byte[1000000];
也就是,如下所示
class Garbage
{
private byte[] b = new byte[1000000];
public static void main(String args[]) {

这样弄下来,我不相信你的freeMemory不小

不过要注意的是,要把握个量,才能得到最好的实验效果,因为一旦内存用完,系统会使用虚拟内存,造成的结果就是显示出来的freeMemory比totalMemory更大,因为加上了虚拟内存

所以压力测试的原则就是: 在条件允许的情况下,往狠里弄,没有条件,创造条件也要弄

补充一点 ,你怎么说也是个助理二级,一分都不给,要不是小咪现在缺分,~~~~~~~~~~~真不愿意打这么多字