Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每当我关闭任何片段时,都会出现未知内存泄漏_Java_Android_Android Fragments_Memory Leaks_Leakcanary - Fatal编程技术网

Java 每当我关闭任何片段时,都会出现未知内存泄漏

Java 每当我关闭任何片段时,都会出现未知内存泄漏,java,android,android-fragments,memory-leaks,leakcanary,Java,Android,Android Fragments,Memory Leaks,Leakcanary,当我关闭任何片段时,我正在制作博客应用程序,并且内存泄漏……我试图找到答案,一些人说在onDestroyView或onDestroy上取消您的视图引用(我尝试了这两种方法,但都不起作用),然后我只创建了没有任何视图的空白片段(只有蓝色背景),即使我关闭了BlankFragment,我仍然得到相同的内存泄漏…下面是我用来添加空白片段的代码 Fragment blankFragment = new BlankFragment(); FragmentTransaction transaction

当我关闭任何片段时,我正在制作博客应用程序,并且内存泄漏……我试图找到答案,一些人说在onDestroyView或onDestroy上取消您的视图引用(我尝试了这两种方法,但都不起作用),然后我只创建了没有任何视图的空白片段(只有蓝色背景),即使我关闭了BlankFragment,我仍然得到相同的内存泄漏…下面是我用来添加空白片段的代码

 Fragment blankFragment = new BlankFragment();
 FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
 transaction.hide(userProfileFragment);     //hiding userProfileFragment which is current fragment
 transaction.add(R.id.frame_container, blankFragment,"blank");
 transaction.addToBackStack(null);
 transaction.commit();
在我关闭一个不包含任何视图的空白片段之后,我在leak Canary中得到了以下内存泄漏警告

┬───
│ GC Root: System class
│
├─ leakcanary.internal.InternalLeakCanary class
│    Leaking: NO (MainActivity↓ is not leaking and a class is never leaking)
│    ↓ static InternalLeakCanary.resumedActivity
├─ MainActivity instance
│    Leaking: NO (HomeFragment↓ is not leaking and Activity#mDestroyed is false)
│    ↓ MainActivity.startingFragment
├─ HomeFragment instance
│    Leaking: NO (UserProfile_Fragment↓ is not leaking and Fragment#mFragmentManager is not        null)
│    Fragment.mTag=home
│    ↓ HomeFragment.mFragmentManager
├─ androidx.fragment.app.FragmentManagerImpl instance
│    Leaking: NO (UserProfile_Fragment↓ is not leaking)
│    ↓ FragmentManagerImpl.mAdded
├─ java.util.ArrayList instance
│    Leaking: NO (UserProfile_Fragment↓ is not leaking)
│    ↓ ArrayList.elementData
├─ java.lang.Object[] array
│    Leaking: NO (UserProfile_Fragment↓ is not leaking)
│    ↓ Object[].[3]
├─ UserProfile_Fragment instance
│    Leaking: NO (Fragment#mFragmentManager is not null)
│    Fragment.mTag=user
│    ↓ UserProfile_Fragment.transaction
│                           ~~~~~~~~~~~
├─ androidx.fragment.app.BackStackRecord instance
│    Leaking: UNKNOWN
│    ↓ BackStackRecord.mOps
│                      ~~~~
├─ java.util.ArrayList instance
│    Leaking: UNKNOWN
│    ↓ ArrayList.elementData
│                ~~~~~~~~~~~
├─ java.lang.Object[] array
│    Leaking: UNKNOWN
│    ↓ Object[].[1]
│               ~~~
├─ androidx.fragment.app.FragmentTransaction$Op instance
│    Leaking: UNKNOWN
│    ↓ FragmentTransaction$Op.mFragment
│                             ~~~~~~~~~
╰→ BlankFragment instance Leaking: YES (ObjectWatcher was watching this because BlankFragment   received Fragment#onDestroy() callback and Fragment#mFragmentManager is null)

UserProfile\u Fragment.transaction可能是泄漏的原因,您不应该将片段事务保存在内存中,因为它会保留空白片段

UserProfile\u Fragment.transaction可能是泄漏的原因,您不应该将片段事务保存在内存中,因为它会保留空白片段