我一直在开发一个使用两个框架的小型Java实用程序:Encog和Jetty为网站提供神经网络功能。为什么系统。 gc()似乎对某些JVM没有影响
代码“完成”了,它完成了它需要做的所有事情,但是我在内存使用方面遇到了一些问题。在我的开发机器上运行时,当应用程序正在执行操作(训练神经网络)时,内存使用量似乎在大约4MB和13MB之间波动,最多使用大约18MB。这是非常好的用法,我认为这是由于我相当经常地调用System.GC()。我这样做是因为处理时间对我来说并不重要,但是内存使用情况确实如此。
因此,它在我的机器上工作正常,但只要我把它放到我们的服务器上(共享内存限制的unix主机),它使用大约19MB开始,并在上网时升至数百MB的内存使用量的东西。这些和我在测试中一样。我相信,减少内存使用量的唯一方法是退出应用程序并重新启动它。
我可以说的唯一区别就是它正在运行的Java虚拟机。我不知道这一点,我试图找出这种方式的原因,但很多文档假设了Java和虚拟机的丰富知识。是否有人可以帮忙解释为什么会发生这种情况,或许有些事情可以阻止它。
我已经看过使用GCJ编译应用程序,但我不知道这是我应该投入大量时间,是否会真正帮助。
感谢您的帮助!
- 更新:在Mac OS 10.6.3上开发和服务器上的Unix操作系统,但我不知道是什么。 (服务器是WebFaction)
是您的开发环境Windows还是Linux? – 2010-07-08 16:06:44
在Mac OS 10.6上进行开发。对不起,我的意思是说这样。 – danpalmer 2010-07-08 16:12:20