如何用Java编写一段代码引发内存泄露
1个回答
2016-03-19 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。
所以应该明确:存在内存溢出的因不一定导致内存溢出的果
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");
}
}
}
但并没有导致内存溢出,应该是它消耗的内存比较小或者运行时间短,正如这句话所说“存在内存溢出的因不一定导致内存溢出的果”
所以应该明确:存在内存溢出的因不一定导致内存溢出的果
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");
}
}
}
但并没有导致内存溢出,应该是它消耗的内存比较小或者运行时间短,正如这句话所说“存在内存溢出的因不一定导致内存溢出的果”
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询