0

我有一个带有 Hibernate 和 SQLite 方言的 java 项目。此外,我有一个模型元素之间有很多链接。当我想在数据库中存储大量数据时,会出现不规则的堆栈溢出。有时它会起作用。有时它不起作用。这是为什么?

例外:

在 sun.nio.cs.SingleByte.withResult(未知来源)

at sun.nio.cs.SingleByte.access$000(Unknown Source)
at sun.nio.cs.SingleByte$Encoder.encodeArrayLoop(Unknown Source)
at sun.nio.cs.SingleByte$Encoder.encodeLoop(Unknown Source)
at java.nio.charset.CharsetEncoder.encode(Unknown Source)
at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.BufferedWriter.write(Unknown Source)
at java.io.Writer.write(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
    ...
4

1 回答 1

0

在java中,堆栈只能容纳一定数量的嵌套方法调用。因此,例如,如果您有一个大型树状结构并且树的高度大于最大堆栈大小,您将获得堆栈溢出。尽管堆栈溢出的最常见原因是您是否具有递归或循环依赖关系。

所以我给你的建议是找出你的数据结构中是否有可能存在循环依赖。

如果您发现您没有,但您的结构实际上很大,您应该考虑重新设计或拆分您的数据以使其更易于管理。作为最后的手段,可以增加你的筹码量。

于 2012-04-20T11:03:22.687 回答