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