我的程序中有一个递归函数,这个函数本身不是死循环,当数据量不是特别大的时候,比如说100.程序可以得出正常结果
但是当我把数据改成200的时候,就会出现java.lang.StackOverflowError这个异常,我知道这个异常产生的原因是因为我的对递归层数太多。
大家有什么好办法帮我解决这个问题吗?
我看到jvm的栈内存默认只有0.5-1m,有点太小了
我想增加jvm的栈内存,可是不知道应该怎么增加。
我按照网上的说法,修改了我的eclipse.ini文件成这样# Automatically generated by the VMware Installer - DO NOT REMOVE
-vm
/usr/bin/java
# Automatically generated by the VMware Installer - DO NOT REMOVE
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.1.R36x_v20100810
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
1000m
--launcher.defaultAction
openFile
-vmargs
-Xms500m
-Xmx1500m可是问题还是您没有解决,因为据我所知这个方法只是增大了jvm的堆内存,而没有增大栈内存。大家有什么好办法帮我解决这个问题吗?最好能有有效的办法增加jvm的栈内存据说把递归函数改写成循环可以避免这个问题,但是如果改写这个的话太麻烦了。
而且把递归改成循环是不是可以解决问题,这个也不清除。
请大家帮帮我
谢谢拉。