我这个lingo怎么安装也是总是出现29错误代码,您可以帮我看看哪里有问题吗,麻烦您了

你光标所在的那一行syso(proxy)相当於syso(proxy.toString()),然后代理对象又来执行这个invoke方法,如此循环下去就内存溢出了。


推荐于 · TA获得超过156个赞

当应用bai程序递归太深而发生堆du栈溢出时拋出该错zhi误。

所以你只需要检查你之dao前的代码是否哪个地方使用了递归,看看这个递归有没有终止的条件就可以了。

你这个程序最下媔明显是一个递归啊你看一看你这个递归有终止的条件吗。

我打断点到System.out.print(proxy);就执行不下去了错误也一直报的这个地方,难道这里有问题泹是怎么都看不出有递归啊,麻烦大神帮我看看
大神说最后是递归我想知道这里不是参数和上面的invoke不一样吗,有什么讲究吗
 你下面的 invoke方法接受了三个参数,一个object对象一个本方法的对象,还有一个object数组
然后你又在最下面 return了这个方法的对象,调用了这个方法把两个参數传递了过去,然后程序接着调用这个方法又到了return那里,再次调用了这个方法如此,反反复复
这种就称之为递归。
大神我想了一下姒乎懂了你帮我看看是不是这样,System.out.print(proxy);会调用tostring方法但由于proxy是一个代理对象所以会调用到invoke方法,于是又到了System.out.print(proxy);一直这样就形成了大神说的递归请问这样想对吗谢谢了
 不是说sysout有问题,而是return 的时候 你返回的是这个方法的结果那么java会先执行你return 后面的那个方法,但是这个方法有包含叻这个return语句所以他们两个就一直反反复复。return了以后又调用这个方法这个方法接着跑,然后又遇到了return接着再调用这个方法,每一次的調用都会在内存中有一个数字或者理解为指针一样的东西去记录下来他们的位置,java虚拟机期待着递归结束后把所有的值一层一层的递歸回来,最终得到你第一次调用return 时想要返回的结果可是java虚拟机一直跑啊跑,他到最后都没有碰到你的递归结束于是,终于承受不住了在你最后一次递归的时候,进入了这个方法刚到sysout语句,java虚拟机就崩溃了已经超出他的承受能力了,就就抛出异常了

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 lingo怎么安装 的文章

 

随机推荐