黑马程序员技术交流社区

标题: 内存溢出的问题 [打印本页]

作者: 高欢欢    时间: 2012-7-15 12:58
标题: 内存溢出的问题
本帖最后由 高欢欢 于 2012-7-18 07:34 编辑

java 哪些常见的编程方式会引起内存溢出?
作者: 全海波    时间: 2012-7-15 13:06
不是那些编程方式能引起内存的溢出,只要是你的什么类型的数据超出了长度,应该就会出现内存的溢出
作者: 曹俊    时间: 2012-7-15 13:43

楼主请看,这就是个典型的内存溢出的代码形式。
在12行:首先主函数main进栈,然后创建14行new Demo();对象。
接着运行class Demo类,运行Demo d = new Demo();就会在堆空间也创建new Demo();对象,主函数中的对象和类中的对象来回创建,最终导致堆内存溢出。
解决办法:要想修改此程序只需要在第3行中,加上static即可,如下图

这样的话,当程序运行时,因为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