诡异 java 问题,有没有同样碰到过的

2015-04-09 14:15:39 +08:00
 jell

在调试java程序, run该程序时能执行完毕,但没正确结果。
debug它时,会栈溢出。确实有个构造函数有递归调用。
想不通的是,为什么正常run不报溢出错误

3009 次点击
所在节点    Java
9 条回复
Front
2015-04-09 14:24:11 +08:00
直接贴代码会好点。
binjoo
2015-04-09 14:30:33 +08:00
是用的eclipse吗?
如果是的话,确实有可能造成差异的。。

菜单(Eclipse):Run-->Run-->Run Configurations / Debug Configurations

怎么设置我不太清楚,但是我知道这里面是可以设置run/debug的运行内存,个人觉得应该是默认的运行内存不一致造成的吧。

具体你可以搜一下。。。
Aegwynn
2015-04-09 14:30:49 +08:00
调试 Java 程序,需要向 Java 虚拟机请求当前运行态的状态,并对JVM发出一定的指令,设置一些回调等这些额外的操作,会比run需要更多的内存资源。导致请求的栈深度大于虚拟机所允许,将抛出StackOverflowError异常。

run没有报溢出,我猜想此时栈的深度正好处于临界值。没结果,那不正好说明了构造方法的递归导致死循环么。
jell
2015-04-09 14:34:11 +08:00
@binjoo 好的我搜一下 具体配置
@Aegwynn 受教了 :) 我再看看程序
jell
2015-04-09 14:34:38 +08:00
@Front 项目挺大的,没办法贴代码呢
jell
2015-04-09 14:35:44 +08:00
@binjoo 用的 IntelliJ IDEA
sinsin
2015-04-10 08:41:29 +08:00
try -XX:ThreadStackSize=[bigger size]
jell
2015-04-10 09:17:04 +08:00
@sinsin OK, 尝试一下它
LittleLeopard
2015-04-10 11:17:16 +08:00
仔细检查下Debug的时候Watch/Expression中的表达式是不是有问题,对后续执行产生影响了。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/182571

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX