Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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 Management_Memory Leaks - Fatal编程技术网

Java 内存泄漏的片段

Java 内存泄漏的片段,java,android,android-fragments,memory-management,memory-leaks,Java,Android,Android Fragments,Memory Management,Memory Leaks,我目前正在开发一个使用片段的Android应用程序,我遇到了一个内存泄漏,迫使我的应用程序在一段时间后关闭 该应用程序的主要功能是使用一个可在两个页面之间滑动的viewpager,将3个片段并排显示。中间的部分是我们商店的目录 当用户单击目录中的一个类别时,一个新片段将加载更多选项;该类别中的品牌。然后,用户可以单击其中一个品牌来查看其中的产品。然后,用户可以单击产品并在全屏上查看更多详细信息 每次用户单击其中一个按钮时,都会创建一个新的片段,显示他们单击的按钮的内容 碎片是这样的: Catal

我目前正在开发一个使用片段的Android应用程序,我遇到了一个内存泄漏,迫使我的应用程序在一段时间后关闭

该应用程序的主要功能是使用一个可在两个页面之间滑动的viewpager,将3个片段并排显示。中间的部分是我们商店的目录

当用户单击目录中的一个类别时,一个新片段将加载更多选项;该类别中的品牌。然后,用户可以单击其中一个品牌来查看其中的产品。然后,用户可以单击产品并在全屏上查看更多详细信息

每次用户单击其中一个按钮时,都会创建一个新的片段,显示他们单击的按钮的内容

碎片是这样的:

Catalog -> Brands -> All Products -> Indiviudal Product
要更改显示的片段,我使用以下代码:

Brands brandsFragment = new Brands();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.catalogcontent, brandsFragment);
transaction.addToBackStack(null);
transaction.commit();
当用户单击back按钮时,他们将被定向到前面的片段。这就是我想要发生的,但是它似乎在创建一个全新的片段,而不是使用旧的片段

这在查看我们的一些较大品牌时会导致巨大的内存泄漏

当用户按下后退按钮时,他们所在的当前片段应该被销毁,但它们似乎一直存在

我在这里找到了答案:

但是,答案建议使用.add()函数,正如我目前使用的.replace()函数一样。这些有什么区别

我也尝试过彻底清除后盾,但这似乎并没有清除记忆

Android Profiler工具(如图所示)显示,使用最多的内存是Java。这实际上是与片段有关还是我的应用程序存在其他问题

谢谢