我正在Java 5上编写一个客户端Swing应用程序(图形字体设计器).最近,我遇到了java.lang.OutOfMemoryError: Java heap space
个错误,因为我对内存使用并不保守.用户可以打开无限数量的文件,程序会将打开的对象保存在内存中.在快速研究之后,我发现有Ergonomics in the 5.0 Java Virtual Machine人和其他人在Windows机器上说JVM默认最大堆大小为64MB
.
在这种情况下,我应该如何处理这种限制?
我可以将max heap sizeusingcommand line选项增加到java,但这需要找出可用的RAM并编写一些启动程序或脚本.此外,增加到大约finite个最大值并不能解决这个问题.
我可以重写一些代码,以便经常将对象持久化到文件系统(使用数据库也是一样),从而释放内存.这可能行得通,但可能也有很多工作要做.
如果你能给我指出以上 idea 的细节,或者像automatic virtual memory, extending heap size dynamically这样的替代方案,那就太好了.