我正在使用Java 5编写客户端的Swing应用程序(图形字体设计器)。最近,由于我在内存使用上没有保守,因此遇到了java.lang.OutOfMemoryError: Java heap space
错误。用户可以打开无限数量的文件,而程序会将已打开的对象保存在内存中。经过快速研究,我发现在Windows机器上JVM默认的最大堆大小为64MB
,详情请参阅Java虚拟机5.0中的人体工程学等文献。
鉴于这种情况,我应该如何处理这个限制呢?
我可以使用命令行选项将最大堆大小增加到可用RAM,然后编写一些启动程序或脚本。但是,增加到一些有限的最大值并不能彻底解决问题。
我可以重写我的一些代码,经常将对象持久化到文件系统中(使用数据库也是同样的道理),以释放内存。这可能有效,但也需要付出很多努力。
如果您能指导我关于上述想法的详细信息或类似自动虚拟内存,动态扩展堆大小的替代方案,那就太好了。