gpt4 book ai didi

java - 碎片化内存是什么样子的?

转载 作者:行者123 更新时间:2023-11-30 12:01:02 25 4
gpt4 key购买 nike

我有一个移动应用程序随着时间的推移速度变慢。我的直觉(部分由 this article 提供)是由于内存碎片导致应用程序变慢,但我不确定。这是应用内存使用随时间变化的漂亮图表:

fraggle rock http://kupio.com/image-dump/fragmented.png

图表上的 4 个峰值是应用程序上完全相同的任务的 4 次执行。我开始任务,它分配了一堆内存,它坐了一会儿(顶部的扁平线)然后我停止了任务。那时它调用 System.gc();并且内存被清理。

可以看出,完全相同的任务的 4 次运行中的每一次都需要更长的时间来执行。图中的低点都返回到同一水平,因此任务运行之间似乎没有任何内存泄漏。

我想知道的是,内存碎片是一个可行的解释,还是我应该先看看别处,记住我已经做了很多查找?图中的低点相对较低,所以我的假设是在这种状态下内存不会非常碎片化,因为不会有很多小的内存空洞导致问题。

虽然我不知道 j2me 内存分配器是如何工作的,所以我真的不知道。谁能建议?有没有其他人遇到过这个问题并认识到应用程序的内存配置文件?

最佳答案

如果您有一点时间,您可以通过使用内存池技术重新使用内存来测试您的理论:任务的每次运行都使用“相同”的内存块,方法是从池中获取它们并在发布时归还它们。

如果在进行此调查后您仍然看到性能下降,则不是内存碎片导致了问题。让我们都知道您的结果,我们可以帮助进一步解决问题。

关于java - 碎片化内存是什么样子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1267031/

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