如何用Java编写一段代码引发内存泄露
推荐于2016-01-30 · 知道合伙人互联网行家
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。
所以我们应该明确:存在内存溢出的因不一定导致内存溢出的果
public class Know {
public static void main(String [] args)
{
int w = new Integer(args[0]).intValue();
int h = Integer.parseInt(args[1]);
for(int i=0;i<h;i++)
{
StringBuffer sb=new StringBuffer();
for(int j=0;i<w;j++)
{
sb.append('*');
}
System.out.println(sb.toString());
}
}
}
这是我在网上找的一个例子,试验了一下,是对的,造成内存溢出的原因是
for(int j=0;i<w;j++)
{
sb.append('*');
}
是死循环,我原先是这么写的一个例子
public class Know {
public static void main(String[] args) {
while(true){
System.out.println("ok");
}
}
}
但并没有导致内存溢出,应该是它消耗的内存比较小或者运行时间短,正如这句话所说“存在内存溢出的因不一定导致内存溢出的果”
希望可以帮到你
for (int j = 0; j < Integer.MAX_VALUE; j++)
{
l.add(new Integer(j));
}
运行一分钟左右就会抛出该异常
2014-12-30
String a = new String("lol");
while(true){
a += a;
}
}