待执行的方法会写在栈内存中。如果代码bug导致出现死循环,java就会报栈内存溢出,这样可以预防服务器崩溃。
如果不出现死循环,而递归次数过多(比如一万以上),也会出现栈内存溢出。因为递归是把所有方法全部列举出来,压入栈中,从栈底一直累加到栈顶,直到条件结束,才一次性一起执行。
堆内存用于存储数据,当数据量过大时会出现栈内存溢出。比如把一个list不停地复制,或者在数据库中一次性读入一个过大的list。 堆内存的大小是可以手动修改的。
待执行的方法会写在栈内存中。如果代码bug导致出现死循环,java就会报栈内存溢出,这样可以预防服务器崩溃。
如果不出现死循环,而递归次数过多(比如一万以上),也会出现栈内存溢出。因为递归是把所有方法全部列举出来,压入栈中,从栈底一直累加到栈顶,直到条件结束,才一次性一起执行。
堆内存用于存储数据,当数据量过大时会出现栈内存溢出。比如把一个list不停地复制,或者在数据库中一次性读入一个过大的list。 堆内存的大小是可以手动修改的。