V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jell
V2EX  ›  Java

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

  •  
  •   jell · 2015-04-09 14:15:39 +08:00 · 3163 次点击
    这是一个创建于 3500 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    9 条回复    2015-04-10 11:17:16 +08:00
    Front
        1
    Front  
       2015-04-09 14:24:11 +08:00   ❤️ 1
    直接贴代码会好点。
    binjoo
        2
    binjoo  
       2015-04-09 14:30:33 +08:00   ❤️ 1
    是用的eclipse吗?
    如果是的话,确实有可能造成差异的。。

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

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

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

    run没有报溢出,我猜想此时栈的深度正好处于临界值。没结果,那不正好说明了构造方法的递归导致死循环么。
    jell
        4
    jell  
    OP
       2015-04-09 14:34:11 +08:00
    @binjoo 好的我搜一下 具体配置
    @Aegwynn 受教了 :) 我再看看程序
    jell
        5
    jell  
    OP
       2015-04-09 14:34:38 +08:00
    @Front 项目挺大的,没办法贴代码呢
    jell
        6
    jell  
    OP
       2015-04-09 14:35:44 +08:00
    @binjoo 用的 IntelliJ IDEA
    sinsin
        7
    sinsin  
       2015-04-10 08:41:29 +08:00   ❤️ 1
    try -XX:ThreadStackSize=[bigger size]
    jell
        8
    jell  
    OP
       2015-04-10 09:17:04 +08:00
    @sinsin OK, 尝试一下它
    LittleLeopard
        9
    LittleLeopard  
       2015-04-10 11:17:16 +08:00
    仔细检查下Debug的时候Watch/Expression中的表达式是不是有问题,对后续执行产生影响了。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1001 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 20:42 · PVG 04:42 · LAX 12:42 · JFK 15:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.