gpt4 book ai didi

java - 指针和垃圾回收

转载 作者:搜寻专家 更新时间:2023-11-01 09:05:12 25 4
gpt4 key购买 nike

我有以下代码:

loadedImageDraggable.setBitmap(bitmap);
Log.v(TAG, "recycled image1 :"+bitmap);
Log.v(TAG, "recycled image2 :"+loadedImageDraggable.getBitmap());
bitmap.recycle();
bitmap = null;
Log.v(TAG, "recycled image3 :"+bitmap);
Log.v(TAG, "recycled image4 :"+loadedImageDraggable.getBitmap());

因此,当我编写此代码时,我所期望的是位图对象将从内存中删除。当我运行代码时,我实际得到的是这个日志跟踪:

recycled image1 :android.graphics.Bitmap@41afa8e0
recycled image2 :android.graphics.Bitmap@41afa8e0
recycled image3 :null
recycled image4 :android.graphics.Bitmap@41afa8e0

您可以在最后一行看到,仍然有这个位图对象,包裹在 loadedImageDraggable 中。由于对象是通过引用传递给方法的,因此我希望 java 在对象设置为 null 时清除对该位图对象的所有引用。我很迷惑 :/有人可以帮我解决这个问题吗?

最佳答案

您有两个对同一个位图对象的引用。一个是 bitmap 另一个在 loadedImageDraggable 里面现在,如果您将 bitmap 设置为 null,则 loadedImageDraggable 中的引用当然不会更改。它仍然指向你的 Bitmap@41afa8e0

关于java - 指针和垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12422205/

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