各位关心我问题的达达们,谢谢你们:我现在是想串行化一个具有100W数据的平衡二叉树结构,很显然串行化的时候 WriteObject(root)//这个root 就是平衡二叉树的根结点,但是串行化的时候出问题了,
直接 java.lang.stack over flow,后来自己想了好久才发现,java串行化的时候好像并不是先保存root这个结点,而是不断地递归,直到没有跟root结点的相关信息为止,也就是需要个栈 不断保存临时结点……。
我现在就是想直到如何解决 串行化时候的 stack over flow 这个异常……,树结构肯定要保存的额,肯定不能用数组来保存这个数据信息——我后面要用这100W信息 做查询用,所以请教各位达达,到底该怎么保存这100W数据才能防止 栈溢出错误,有人说用B+树,B+树的层次是浅了,但是可能是我对串行化的原理不理解,还请达达我们讲讲 串行化的整个过程……谢谢了 我分不多…… 就当是讨论 可以么……
直接 java.lang.stack over flow,后来自己想了好久才发现,java串行化的时候好像并不是先保存root这个结点,而是不断地递归,直到没有跟root结点的相关信息为止,也就是需要个栈 不断保存临时结点……。
我现在就是想直到如何解决 串行化时候的 stack over flow 这个异常……,树结构肯定要保存的额,肯定不能用数组来保存这个数据信息——我后面要用这100W信息 做查询用,所以请教各位达达,到底该怎么保存这100W数据才能防止 栈溢出错误,有人说用B+树,B+树的层次是浅了,但是可能是我对串行化的原理不理解,还请达达我们讲讲 串行化的整个过程……谢谢了 我分不多…… 就当是讨论 可以么……
还有,你也可以不直接持久化树根,而是将树根下的第一层分别持久化,恢复的时候也稍微麻烦点,
不知道你的一个子树有多少记录。没办法,java默认的持久化实现就是有性能问题,因为这些数据会缓冲在ObjectOutputStream的缓存里,这样相当于占用了两倍的内存啊。