gpt4 book ai didi

java - 运行内存密集型 Java 应用程序后操作系统变慢的原因是什么?

转载 作者:行者123 更新时间:2023-11-29 09:46:22 28 4
gpt4 key购买 nike

我目前正在 MacOSX Snow Leopard 上的 Eclipse 中运行一个小型 Java 类,用于对图形(它在内部创建大量庞大的集合)进行科学计算。我有一台 2GB RAM 的 Macbook,要成功运行该应用程序而不会出现 OutOfMemory 错误,我需要使用 -Xmx1200m 从 eclipse 运行它(我知道这非常多)。

完成我需要运行的所有计算大约需要 500 秒,它还用完了我给它的所有内存(我用 macosx progress monitor 监视它,Real Mem 达到 1.2GB)

完成此应用程序后,我的 MacOSX 几乎无法使用。即使我关闭 Eclipse,一切都会变得缓慢而缓慢。我还注意到无论我之后做什么(甚至在关闭 Eclipse 之后),例如Finder 导航非常慢。呈现某些文件夹或更改目录需要很长时间。有时我会重新启动系统以便能够再次高效地工作。

我想了解发生这种情况时后台发生了什么?我的印象是,当一个 java 类/应用程序完成运行时,垃圾收集器至少在最后会清理所有东西,我本以为其他程序可以再次免费使用这 block 内存。但它“感觉”像是影响整个系统的内存泄漏,即使 Java 应用程序不再运行也是如此。

我将不胜感激这方面的任何提示或阅读。

最佳答案

你的 Mac 运行缓慢,因为它有 2GB,你有 Eclipse 运行并且你有一个 1.2GB 的应用程序。它可能疯狂地交换。

您的 Java 程序可能存在内存泄漏。您正在添加到集合中而不是从中删除。您可以使用 TPTP、NetBeans 或 VisualVM 等分析器来搜索它。

如果你做错事,Java 程序可能会像任何其他语言一样泄漏。

如果您确实需要那么多内存并且它不是泄漏,那么如果您无法拆分程序或无法将中间结果保存到文件或数据库中,则可能需要购买更多内存。

关于java - 运行内存密集型 Java 应用程序后操作系统变慢的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3915139/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com