在调试java程序, run该程序时能执行完毕,但没正确结果。
debug它时,会栈溢出。确实有个构造函数有递归调用。
想不通的是,为什么正常run不报溢出错误
1
Front 2015-04-09 14:24:11 +08:00 1
直接贴代码会好点。
|
2
binjoo 2015-04-09 14:30:33 +08:00 1
是用的eclipse吗?
如果是的话,确实有可能造成差异的。。 菜单(Eclipse):Run-->Run-->Run Configurations / Debug Configurations 怎么设置我不太清楚,但是我知道这里面是可以设置run/debug的运行内存,个人觉得应该是默认的运行内存不一致造成的吧。 具体你可以搜一下。。。 |
3
Aegwynn 2015-04-09 14:30:49 +08:00 1
调试 Java 程序,需要向 Java 虚拟机请求当前运行态的状态,并对JVM发出一定的指令,设置一些回调等这些额外的操作,会比run需要更多的内存资源。导致请求的栈深度大于虚拟机所允许,将抛出StackOverflowError异常。
run没有报溢出,我猜想此时栈的深度正好处于临界值。没结果,那不正好说明了构造方法的递归导致死循环么。 |
7
sinsin 2015-04-10 08:41:29 +08:00 1
try -XX:ThreadStackSize=[bigger size]
|
9
LittleLeopard 2015-04-10 11:17:16 +08:00
仔细检查下Debug的时候Watch/Expression中的表达式是不是有问题,对后续执行产生影响了。。
|