jell
V2EX  ›  Java

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

  •  
  •   jell · Apr 9, 2015 · 4590 views
    This topic created in 4233 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
    Front
    Apr 9, 2015❤️1
    1
    直接贴代码会好点。
    binjoo
    binjoo
    Apr 9, 2015❤️1
    2
    是用的eclipse吗?
    如果是的话,确实有可能造成差异的。。

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

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

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

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