Chinaunix

标题: 任务树过多导致StackOverflowError,如何解决? [打印本页]

作者: z_jingwei    时间: 2006-06-24 20:25
标题: 任务树过多导致StackOverflowError,如何解决?
我正在写一个服务,里面有很多任务,每个任务有多个子任务。

派生树是:
--Thread
  --MessageObject          消息对象,可接收和处理消息
    --AbstractTask         抽象任务-提供基本任务管理功能
      --OperableTask       可操作任务-提供任务的操作能力,如通过管理线程来操作
        --TaskNode         任务节点-生成树形结构

其中从TaskNode派生的类,在实例化时,会自动与系统中已存在的任务形成一颗树。每个任务都是一个线程,但实例(new)化时,不运行。

今天运行时,抛出了StackOverflowError错误,是栈溢出。调试了一下,发现把任务减少到15个时,没有问题,再new出一个任务后就会抛出错误。

有没有什么解决的办法?比较急!
作者: wobushiwo    时间: 2006-06-24 22:11
估计是存放结构或使用上有问题?

假如任务之间是有关系的,可以使用别的方式存储,好好整理一下,就算任务多,之间有关系,也不应该有这种错误的
作者: cooljia    时间: 2006-06-26 09:33
StackOverflowError是因为调用关系过于复杂, 比如说函数调用层次太多引起的.

  1. Thrown when a stack overflow occurs because an application recurses too deeply.
复制代码


建议检查一下调用的第三方API是否存在问题, 检查你的程序是否存在循环调用或者过于复杂的调用关系.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2