jell
V2EX  ›  Java

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

  •  
  •   jell · Apr 9, 2015 · 4049 views
    This topic created in 4053 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    run没有报溢出,我猜想此时栈的深度正好处于临界值。没结果,那不正好说明了构造方法的递归导致死循环么。
    jell
        4
    jell  
    OP
       Apr 9, 2015
    @binjoo 好的我搜一下 具体配置
    @Aegwynn 受教了 :) 我再看看程序
    jell
        5
    jell  
    OP
       Apr 9, 2015
    @Front 项目挺大的,没办法贴代码呢
    jell
        6
    jell  
    OP
       Apr 9, 2015
    @binjoo 用的 IntelliJ IDEA
    sinsin
        7
    sinsin  
       Apr 10, 2015   ❤️ 1
    try -XX:ThreadStackSize=[bigger size]
    jell
        8
    jell  
    OP
       Apr 10, 2015
    @sinsin OK, 尝试一下它
    LittleLeopard
        9
    LittleLeopard  
       Apr 10, 2015
    仔细检查下Debug的时候Watch/Expression中的表达式是不是有问题,对后续执行产生影响了。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5781 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 312ms · UTC 06:28 · PVG 14:28 · LAX 23:28 · JFK 02:28
    ♥ Do have faith in what you're doing.