黑马程序员技术交流社区
标题:
内存溢出的问题
[打印本页]
作者:
高欢欢
时间:
2012-7-15 12:58
标题:
内存溢出的问题
本帖最后由 高欢欢 于 2012-7-18 07:34 编辑
java 哪些常见的编程方式会引起内存溢出?
作者:
全海波
时间:
2012-7-15 13:06
不是那些编程方式能引起内存的溢出,只要是你的什么类型的数据超出了长度,应该就会出现内存的溢出
作者:
曹俊
时间:
2012-7-15 13:43
未命名.jpg
(18.88 KB, 下载次数: 99)
下载附件
2012-7-15 13:34 上传
楼主请看,这就是个典型的内存溢出的代码形式。
在12行:首先主函数main进栈,然后创建14行new Demo();对象。
接着运行class Demo类,运行Demo d = new Demo();就会在堆空间也创建new Demo();对象,主函数中的对象和类中的对象来回创建,最终导致堆内存溢出。
解决办法:要想修改此程序只需要在第3行中,加上static即可,如下图
2.jpg
(18.11 KB, 下载次数: 93)
下载附件
2012-7-15 13:41 上传
这样的话,当程序运行时,因为static Demo d = new Demo();是静态的,就在方法区中已经创建了,就不会再在堆内存中创建new Demo对象,这样的话,就能保证程序的正常运行了。
希望我说的能对你起到帮助,要是有错误,欢迎指正~~~!{:soso__8961432591078930798_3:}
作者:
韦念欣
时间:
2012-7-15 15:03
无限递归也会造成内存溢出。
如下代码:
class Demo
{
public static void main(String[] args){
f(0);
}
public static void f(int n){
System.out.println(n);
f(n+1);
}
}
作者:
高欢欢
时间:
2012-7-15 15:49
谢谢各位的指点!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2