如何处理“java.lang.OutOfMemoryError: Java heap space”错误?
我正在Java 5上编写客户端Swing应用程序(图形字体设计器)。最近,我遇到了错误,因为我对内存使用不保守。用户可以打开无限数量的文件,并且程序将打开的对象保存在内存中。经过快速研究,我发现5.0 Java虚拟机中的人体工程学和其他说法在Windows机器上JVM默认最大堆大小为。java.lang.OutOfMemoryError: Java heap space
64MB
鉴于这种情况,我应该如何处理这种约束?
我可以使用命令行选项将最大堆大小增加到java,但这需要找出可用的RAM并编写一些启动程序或脚本。此外,增加到某个有限的最大值并不能最终解决问题。
我可以重写一些代码,将对象频繁地保存到文件系统中(使用数据库是一回事)以释放内存。它可以工作,但也可能是很多工作。
如果你能给我指出上述想法的细节或一些替代方案,如自动虚拟内存,动态扩展堆大小,那就太好了。