首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

写Java代码诀别使堆溢出,栈溢出

2013-02-20 
写Java代码分别使堆溢出,栈溢出?我们知道,在JAVA中,可以使用关键字new来创建Java对象。例如,ArrayList list

写Java代码分别使堆溢出,栈溢出

?

我们知道,在JAVA中,可以使用关键字new来创建Java对象。例如,

ArrayList list = new ArrayList();

实际上,在创建完上面的一个对象后,在JVM中,会把new出来的对象存放在堆内存中,

同时,在方法栈中存放着对象的引用关系。

如果想要堆溢出,比较简单,可以循环创建对象或大的对象;

如果想要栈溢出,可以递归调用方法,这样随着栈深度的增加,JVM 维持着一条长长的方法调用轨迹,

直到内存不够分配,产生栈溢出。

?

因此,可以使用下面简单的代码实现堆溢出和栈溢出。

public class Test {    public void testHeap(){        for(;;){              ArrayList list = new ArrayList (2000);          }    }    int num=1;    public void testStack(){        num++;        this.testStack();     }        public static void main(String[] args){        Test  t  = new Test ();        t.testHeap();        t.testStack();       }}

?

?另外,Java虚拟机的堆大小如何设置:命令行

 java –Xms128m //JVM占用最小内存

?????????? –Xmx512m //JVM占用最大内存

?????????? –XX:PermSize=64m //最小堆大小

?????????? –XX:MaxPermSize=128m //最大堆大小

?

热点排行