非常简单的Android应用中的内存泄漏

克里斯蒂·威尔士

我有一个非常复杂的应用程序正在泄漏内存。为了跟踪泄漏,我将启动器应用程序剥离为一个非常简单的Android应用程序,该应用程序在导航到下一个活动时仍在泄漏活动。我使用Android Studio中的hprof分析器发现了泄漏。整个精简后的启动器活动是:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class HomeTest extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button btnStaffStart = (Button)findViewById(R.id.btnStaffStart);

    btnStaffStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            Intent startNewActivityOpen = new Intent(HomeTest.this, StaffMenu.class);
            startActivity(startNewActivityOpen);

            finish();
        }

    });
}


}

当我导航到StaffMenu活动时,分析器显示HomeTest活动泄漏。如果有的话,我做错了什么吗?启动活动是否总是在Android中泄漏内存?我没有收到OutOfMemory错误消息,只是不喜欢泄漏内存。该应用程序不会分配太多内存,因此即使在精简活动中(少于1%),可用内存也非常小。

我正在运行Android 4.2、4.4和5.1。

编辑我只是尝试了另一个应用程序,它在导航到下一个活动后也泄漏了启动器活动。已知的Android错误???

罗伯塔斯·塞库斯(Robertas Setkus)

此代码中没有内存泄漏。我无法解释内存泄漏分析器的结果,但我不会完全相信,因为该特定功能是在上一个AS版本中引入的。

您在两次活动之间多次导航时是否检查了多少活动实例?您可以在终端中使用此命令adb shell dumpsys meminfo <package_name|pid>或在“ Android Monitor”透视图中使用AS进行检查。在这种情况下,活动不应超过2个。

在此处输入图片说明

如果您想确保我建议您使用MAT内存分析器。如何使用它,您可以在这里找到

编辑:这是确保您的活动没有泄漏的另一种不错的选择示例如何在活动泄漏时转储内存堆。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在一个非常简单的程序中检测到内存泄漏。该怎么办?

来自分类Dev

了解Android应用程序中的内存泄漏

来自分类Dev

了解Android应用程序中的内存泄漏

来自分类Dev

非常简单的perl脚本会导致大量内存泄漏

来自分类Dev

简单查询导致Django中的内存泄漏

来自分类Dev

简单金属程序中的内存泄漏

来自分类Dev

防止Android中的内存泄漏

来自分类Dev

Android 应用程序和内存泄漏

来自分类Dev

在Swift应用中找不到内存泄漏

来自分类Dev

非常非常简单的应用

来自分类Dev

Android中内存泄漏的潜在原因

来自分类Dev

这是Android中的内存泄漏吗

来自分类Dev

如何在Android中释放内存以避免内存泄漏

来自分类Dev

Android我的应用程序内存泄漏吗?

来自分类Dev

Android我的应用程序内存泄漏吗?

来自分类Dev

无法定位 Android 应用程序内存泄漏的原因

来自分类Dev

Android动画内存泄漏

来自分类Dev

如何捕获Angular应用程序中的内存泄漏?

来自分类Dev

如何减少/消除Angular应用程序中的内存泄漏

来自分类Dev

Java Web应用程序中的内存泄漏

来自分类Dev

托管应用程序中的非托管内存泄漏

来自分类Dev

实时应用程序中的内存泄漏检查

来自分类Dev

如何跟踪Rails应用程序中的内存泄漏?

来自分类Dev

iPhone应用程序内存泄漏与NSMutableArray中的UIImages

来自分类Dev

如何减少/消除Angular应用程序中的内存泄漏

来自分类Dev

无法找出C应用程序中的内存泄漏

来自分类Dev

Windows 10上的WPF应用中的内存泄漏

来自分类Dev

Scrapy中的内存泄漏

来自分类Dev

Golang中的内存泄漏