Chr*_*oph 1 java performance memory-leaks memory-management
我目前正在运行一个小型的java类,用于在MacOSX Snow Leopard上的Eclipse内部进行科学计算(内部创建大量集合).我有一个带2GB内存的Macbook并且在没有OutOfMemory错误的情况下成功运行应用程序我需要使用-Xmx1200m从eclipse运行它(我知道这非常多).
我需要大约500秒来完成我需要运行的所有计算,它也耗尽了我给它的所有内存(我使用macosx进度监视器进行监视,对于Real Mem,它会达到1,2GB)
完成此应用程序后,我的MacOSX几乎无法使用.即使我关闭Eclipse,一切都变得缓慢而缓慢.我还注意到,无论我事后做什么(甚至在关闭Eclipse之后),例如Finder导航都很慢.渲染一些文件夹或更改目录需要很长时间.有时我会重新启动系统以便能够有效地再次工作.
我想了解发生这种情况时后台发生了什么?我的印象是,当一个java类/应用程序运行完毕时,垃圾收集器至少在最后会清理所有内容,我希望其他程序可以再次使用这个内存.但它"感觉"就像一个影响整个系统的内存泄漏,即使Java应用程序不再运行.
我会很感激这方面的任何提示或阅读.
你的Mac运行缓慢,因为它有2GB,你运行Eclipse并且你有一个1.2GB的应用程序.它可能像疯了一样交换.
您的Java程序可能存在内存泄漏.您正在添加集合而不是从集合中删除.您可以使用TPTP,NetBeans或VisualVM等分析器来搜索它.
如果你做错了,Java程序可能会泄漏任何其他语言.
如果你真的需要那么多内存并且它不是泄漏那么你可能需要购买更多,如果你不能拆分程序或将中间结果保存到文件或数据库.