记得当年学C的时候尝试过.
在JAVA下不知道怎么做的?
import java.util.*;
class MemoryEator 
{
Vector<byte[]> waste;
boolean b = false;
public static void main(String[] args) 
{
int total = 0;
while(true){
total++;
System.out.println("used "+total+"M already");
MemoryEator me = new MemoryEator();
try{
Thread.sleep(100);
}catch(Exception e){}
if(false)
break;
}
System.out.println("Hello World!");
}
public MemoryEator(){
waste = new Vector<byte[]>();
}
public boolean eat(){
byte[] temp = new byte[1024*1024];
if(!b)
for(int i = 0;i < 1024*1024; i++){
temp[i] = (byte)(i%255);
} else{
byte[] a = waste.get(waste.size()/2);
for(int i = 0;i < 1024*1024; i++)
temp[i] = a[i];
}
waste.add(temp);
return true;
}
}
不知道有没有效果,大家给我测试下吧,谢谢了.

解决方案 »

  1.   

    package hziee;import java.util.*;class MemoryEator 
    {
    private Vector<byte[]> waste;
    private boolean b  = false ;

    public MemoryEator()
    {
    waste = new Vector<byte[]>();
    }

    public boolean eat()
    {
    byte[] temp = new byte[1024*1024];

    if(!b)
    {
    for(int i = 0;i < 1024*1024; i++)
    {
    temp[i] = (byte)(i%255);
    }
    }
    else
    {
    byte[] a = waste.get(waste.size()/2);

    for(int i = 0;i < 1024*1024; i++)
    {
    temp[i] = a[i];
    }
    }

    waste.add(temp);

    return true;
    }

    public static void main(String[] args) 
    {
    int total = 0;

    MemoryEator me = new MemoryEator();
    while(true)
    {
    total++;
    System.out.println("used "+total+"M already");


    if(!me.eat())
                  break;
    try{
    Thread.sleep(100);
    }catch(Exception e){}
    }

    System.out.println("Hello World!");
    }
    }运行结果:
    used 1M already
    used 2M already
    used 3M already
    used 4M already
    used 5M already
    used 6M already
    used 7M already
    used 8M already
    used 9M already
    used 10M already
    used 11M already
    used 12M already
    used 13M already
    used 14M already
    used 15M already
    used 16M already
    used 17M already
    used 18M already
    used 19M already
    used 20M already
    used 21M already
    used 22M already
    used 23M already
    used 24M already
    used 25M already
    used 26M already
    used 27M already
    used 28M already
    used 29M already
    used 30M already
    used 31M already
    used 32M already
    used 33M already
    used 34M already
    used 35M already
    used 36M already
    used 37M already
    used 38M already
    used 39M already
    used 40M already
    used 41M already
    used 42M already
    used 43M already
    used 44M already
    used 45M already
    used 46M already
    used 47M already
    used 48M already
    used 49M already
    used 50M already
    used 51M already
    used 52M already
    used 53M already
    used 54M already
    used 55M already
    used 56M already
    used 57M already
    used 58M already
    used 59M already
    used 60M already
    used 61M already
    used 62M already
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
      

  2.   

    zhudonhua(liji)  :
    请问你的系统平台是什么样的,为什么我这里都运行到3000M多了还没有抛出异常?
    我用的是JDK1.4.2, 512RAM,WINDOWS XP。
      

  3.   

    其实最简单的就是调用Runtime.getRuntime()方法!30秒吃掉内存!简单使用!一行代码就可以搞定!