安卓内存测试

标签 android memory heap-memory stack-memory

这可能是一个愚蠢的问题,但我似乎无法在互联网上找到很多具体信息。

假设我有 2 个 Activity :MainActivity 和 Secondactivity。 主 Activity 有一个按钮可以转到第二个 Activity 。 第二个 Activity 有一个返回到 主要 Activity (下面的代码非常简单)。

我想了解 android 内存管理,这就是我进行此测试的原因。

我的问题:

当我不断地在 Activity 之间来回切换时,在 Android Studio 中查看内存图时,我可以看到一个蓝色的图,它永远不会回到它在应用程序启动时分配的内存。 我有内存泄漏吗? (可能不是因为这是基本代码)。但是为什么它永远不会回到一开始就分配给它的原始内存呢?

mainactivity只有这个方法:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btnTest = (Button) findViewById(R.id.btnTest);
    btnTest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            Log.i(null, "test");
            finish();
            startActivity(new Intent(MainActivity.this, SecondActivity.class));
        }
    });
}

虽然 SecondAcitivity 只是回到第一个并创建一些按钮

public class SecondActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    Button btnTest = (Button) findViewById(R.id.btnTest);
    btnTest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            Log.i(null, "test");
            finish();
            startActivity(new Intent(SecondActivity.this, MainActivity.class));
        }
    });

}

enter image description here

最佳答案

我认为问题在于使用 genymotion 作为模拟器。 您应该使用真实的设备进行内存分析,而且较旧的内存监视器更精确。

关于安卓内存测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34983311/

相关文章:

c - C 数组名称如何在一个内存位置保存两个值?

java - 我如何允许用户轻松地选择在 Java Swing 应用程序中分配多少内存?

java - 为什么我不能增加我的堆大小?

c++ - 在堆上定义内置类型

android - 如何在 Glide 中的缓存图像上应用动画

c++ - for 循环只打印一半的值(使用 vector )

c - C 中的 Mallocing 结构

android - Bridj 是否推荐用于 OpenCV?

android 6.0 版本结束通话的正确方法

安卓漏洞?在正确项目的项目动画期间,数据库更新后错误的行开始在 ListView 上动画