【问题标题】:how to deallocate memory spaces in Java. ? [closed]如何在 Java 中释放内存空间。 ? [关闭]
【发布时间】:2018-03-23 12:03:46
【问题描述】:

我正在做一个有问题的增强项目,“随着应用程序使用量的增加,android 应用程序的进程会按比例减慢”我发现进程缓慢的原因是缓存内存中的数据积累,在特定会话关闭后不会被清除(即即使在应用程序关闭后缓存仍然存在。)。由于该应用程序是用 Java 开发的,因此我无法使用 Destructor 来清除内存空间。 任何人都可以建议释放内存空间的可能方法吗?

【问题讨论】:

  • 什么缓存?你有程序访问它吗?如果不是,则;你不能用它做任何事情。事实上,如果它在你的应用程序关闭后保留内存,我怀疑你可以做些什么来修复它。
  • Java 有一个垃圾收集器。您不应该关心与内存相关的问题。如果您的程序性能不佳,则问题可能出在其他地方。
  • 为对象分配的内存空间和媒体文件(如(音频和图像))在处理我们的应用程序时被动态处理。这些是我们应用程序中唯一可能的内存消耗功能。在分析过程中的内存消耗时,我们发现应用程序关闭后缓存有90-120 MB的数据(第一次启动应用程序时应该是30 MB)并且应用程序时没有清除被重新打开。 @Impulse 狐狸

标签: java android performance optimization


【解决方案1】:

Java 使用 Grabage 收集器,因此当没有对该对象的强引用时,该对象的分配内存将被释放,您正在处理的项目似乎有两个问题,它可能会遭受内存泄漏,这将当开发人员留下对不再需要的对象的强引用时发生,例如处理程序,或者从短期对象到静态对象或主类对象的引用。您可以使用 Eclipse MAT 工具来检测这些内存泄漏。

另一个问题似乎是缓存机制并没有释放其内存占用,如果它是内部开发的缓存系统,则需要对其进行调试。建议使用开源缓存库并设置最大内存使用限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2010-12-06
    • 2017-07-09
    • 2013-02-11
    • 2019-02-01
    • 2021-12-04
    相关资源
    最近更新 更多