萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

楼主: @Deutschland

[其它] 学info的请进,(问题解决了,非常感谢大家的tips,dank e God, danke euch!)

[复制链接]
 楼主| 发表于 2008-9-6 21:29 | 显示全部楼层
原帖由 krap 于 2008-9-6 10:22 发表
试过设个Exception breakpoint吗? 就是debug的时候,如果出现这个exception就停住的那种。。。
然后分析一下那个时候的Zwischenzustand$考虑$ 不过不知道StackOverFlow能不能抓住。。呵呵,试试吧。。

另外,如 ...

谢谢 你啊, 我是作的java,另外请问 用stack 存object不好吗?或应该用list oder?嗯,我作的搜索算法需要产生大量的结点(objects),而且这些结点还必须保存下来,结点数量估计从2000 到30000 不等(je nachdem eingabe),用什么样的数据结构好呢?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-9-6 21:39 | 显示全部楼层
原帖由 stella1016 于 2008-9-6 13:13 发表
我用C++的时候也出过这种问题。
我当时就是单纯的打印int[ ]出来,每次打印到1000多时,就溢出。
总而言之,这是个很简单的问题,就是和你分配空间,初始化有关。你试试其他表达方式就能看出了

谢谢你 stella1016 啊,
初始化问题应该不是,因为 我用不同的eingabe调用同样算法时,有的就能运行,有的就overflow,那就是说不是算法中涉及的变量初始化问题。eingabe初始化我检查了,都应该初始化化了。
分配空间的问题,嗯, 我在作的是java,java中对对象的存储结构的数据类型好像一般不太需要自己配置空间,比如 Vector List ArrayList。。。内存空间不是随着被存入的对象数量改变而改变的吗?或者我理解错了你的意思。

trodem vielen vielen dank
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-9-6 21:43 | 显示全部楼层
原帖由 iwu 于 2008-9-6 22:27 发表
lZ,我觉得应该是你的算法自身的问题,出现这个问题说明你的算法不够优化,所以在复杂的eingabe的情况下,会出现几何级数的递归调用,从而造成stack overflow, 你还是看看你的自己的算法吧,比如能不能要精简的冒泡算 ...

谢谢你 iwu啊,

我现在也有这个想法,正在检查我的算法呢。嗯,我作的搜索算法需要产生大量的结点(objects),而且这些结点还必须保存下来,结点数量估计从2000 到30000 不等(je nachdem eingabe),还有什么好的建议呢?

vielen vielen dank
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-9-6 21:52 | 显示全部楼层
原帖由 @Deutschland 于 2008-9-6 22:29 发表

谢谢 你啊, 我是作的java,另外请问 用stack 存object不好吗?或应该用list oder?嗯,我作的搜索算法需要产生大量的结点(objects),而且这些结点还必须保存下来,结点数量估计从2000 到30000 不等(je nachdem ...



hashtable
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-9-6 22:21 | 显示全部楼层
递归算法最容易产生内存溢出的问题, 多数是因为中止条件不够严谨.也许你在判断中间值的时候,出现了相同的值, 也许这样会导致死循环.

因为没有看到代码,说的这些总归是猜测. 最好能贴出代码出来,才能知道究竟问题在哪.
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-9-6 22:46 | 显示全部楼层
内存不够一般是OutOfMemory,
堆栈里面是变量的reference,溢出的话很有可能是程序的算法没有优化,
最好把代码贴出来看看
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-9-7 07:44 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-9-7 10:53 | 显示全部楼层
原帖由 @Deutschland 于 2008-9-6 22:29 发表

谢谢 你啊, 我是作的java,另外请问 用stack 存object不好吗?或应该用list oder?嗯,我作的搜索算法需要产生大量的结点(objects),而且这些结点还必须保存下来,结点数量估计从2000 到30000 不等(je nachdem ...


貌似我们两个说的不是一个stack$frage$

我猜原因是这样的。。Java运行的时候把可分配的空间分成heap和stack。。还有大概就是计算需要的空间。。
他们(heap, stack)都是存生成的instance,一个好像存static的,一个非static的。。
他们的大小是事先分配好的,如果你一直在生成instance而这些instance由于各种原因还不能被garbage collected,总有一刻这个stack就满了,再往下,就要冲到heap里去了。。当然这个是unerwuenscht,然后就会抛出stackoverflowexception。。我理解这个stack不是指你存储的形式。。而是指分配储存instance的空间。。。:)

这也就是为什么你运行简单的eingabe没有问题,当eingabe复杂的时候,算法的rekursion是以几何级数上涨的。。也就是说有可能生成了太多太多的instance。。
所以如果说前面已经试过jvm分配到最大空间也无法满足需求的话。。看看算法能不能优化。。。尽量少生成instance...$bye$

[ 本帖最后由 krap 于 2008-9-7 11:54 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-9-7 11:54 | 显示全部楼层
用c++经常会碰到这样的错误,这根eclipse没啥关系。

用c++经常会用到new来才生一个instanz,但是要注意的是当你不用它的时候要把它delete掉。这是c++最大的缺陷,所以garbage的处理在c++里很重要。

很多人喜欢用java。java 就没有这样的问题,当一个object不再需要的话,自动就被清除掉。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-9-7 12:24 | 显示全部楼层
1. java使用Garbage Collector来自动回收内存,但是你在每个节点的Collection(List, Set, Map)类中,包含了生成的Object的Reference, 这样的Objects(即使不再使用)不能自动释放, 可尝试将不用节点的Collection类,进行强制释放 , 就是程序运行期间,使用clear()方法explicit强制清空Collection类

2. 或使用Conquer and Divid 的模式来分割算法.

[ 本帖最后由 BMW-DaMi 于 2008-9-7 13:28 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2024-11-17 14:28 , Processed in 0.063107 second(s), 15 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表