Articles of 内存泄漏

字符串和内存管理

我正在努力了解Android(Java)中字符串和内存管理的情况。 为简化起见,请看一下这段简单的代码: public void createArray(){ String s = “”; String foo = “foo”; String lorem = “Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an.”; ArrayList array = new ArrayList(); for( int i=0; i<20000; i++ ){ s = foo.replace("foo", lorem); array.add( new Item(s) ); } System.gc(); } private […]

无法转换hprof转储

我尝试将转储从Android设备监视器转换为Eclipse内存分析器格式。 我用下一个命令 hprof-conv dump.hprof converted-dump.hprof 我得到错误 hprof-conv: command not found 我在/platform-tools文件夹中这样做。 当我在另一台计算机上运行相同的命令时,一切正常。问题是什么?

Android内存之间的活动泄漏

我正试图找出这个内存泄漏。 我有两个SurfaceViews , A和B 我启动A ,然后导航到B ,然后按后退按钮返回A ,然后再次导航到B 我每次执行此操作时都可以看到分配的内存增加,最终我会出现内存不足错误。 以下是我从连接到A的SurfaceView内部导航到B A Context context = this.getContext(); Intent i =new Intent(context, StartCareer.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); context.startActivity(i); 在这两个视图中,我有很多位图绘制。 在B ,我找不到任何对A引用,并且在我可以想到的上下文之外的唯一引用是对我所拥有的Global类的引用。 我还在后台进行了一些分析工作。 我想,这可能是一百万种不同的东西 我在Eclipse上有DDMS视图,但我不确定我在看什么,或者如何find不断重复的确切对象。 我会接受关于DDMS分配跟踪器的崩溃课程/教程,或者有人指出我做错了什么。 附加信息: 我在SurfaceView上绘制了一些位图。 B例子有: ////At class level Bitmap rightB,leftB; ////In the constructor rightB = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.right), 100,75, true); ////In doDraw canvas.drawBitmap(rightB, rbX, rbY, null); 还有我的onDestroys @Override public […]

Android Studio 3中找不到HPROF Analyzer工具

HPROF Analyzer / Analyzer任务是android studio 2中的一个很好的工具,可以帮助检测内存泄漏。 它比使用eclipse MAT工具耗时少。 但是,我在AS3中使用新的Android Profiler找不到它。 任何帮助是极大的赞赏!

将上下文从Service传递到Asynctask而不泄漏它

我有一个Service ,我从一个给定的计时器启动AsyncTask来执行后台任务。 我的需求需要短暂的网络任务,这就是我坚持使用Asynctask的原因。 从Asynctask我正在做许多需要context的操作(例如启动通知)。 现在,当我在AsyncTask初始化context ,我收到一条警告“ 此字段泄漏了上下文对象”。 我已经看到了很多关于相同的问题,但它们都与Activity/Fragment 。 所以我的问题是,如何在不泄漏的 context在我的AsyncTask (顶级类)中使用context ?

android中的Sqlite数据库LEAK FOUNDexception?

我在数据库Leak Found中遇到此exception 我的LOGCAT显示了这个: 02-17 17:20:37.857: INFO/ActivityManager(58): Starting activity: Intent { cmp=com.example.brown/.Bru_Bears_Womens_View (has extras) } 02-17 17:20:38.477: DEBUG/dalvikvm(434): GC freed 1086 objects / 63888 bytes in 119ms 02-17 17:20:38.556: ERROR/Database(434): Leak found 02-17 17:20:38.556: ERROR/Database(434): java.lang.IllegalStateException: /data/data/com.example.brown/databases/BRUNEWS_DB_01.db SQLiteDatabase created and never closed 02-17 17:20:38.556: ERROR/Database(434): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1694) 02-17 17:20:38.556: ERROR/Database(434): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:738) 02-17 17:20:38.556: ERROR/Database(434): at […]

Android EditText内存泄漏

很多人注意到一个活动中的EditText即使一旦完成就会持有对活动的强引用。 要清楚这个EditText在布局中并且已经膨胀,没有设置Listener。 这仅发生在某些设备上,例如Samsung Galaxy S4(Android 4.2.2)和其他设备。 很多post关于这个仍然没有解决方案 首先是一些有用的post。 (最终GC会清理它,所以它在技术上不是泄漏,但对于重型内存应用程序,它需要很长时间并将导致OOM) 在EditText中Android三星内存泄漏 为什么EditText在Ice Cream Sandwich中保留其Activity的Context EditText导致内存泄漏 未处理的内存泄漏的可能性 所提到的解决方案并不适用于所有设备。 它归结为Edittext Watcher。 我认为可能有一个解决方案可以覆盖这个Watcher然后有一个函数来清理onDestroy()。 请在这里帮忙,我已经好几天了。 这是MAT直方图

内存泄漏图像

我试图在我的代码库中修复此内存问题。 我正在使用ImageManager跟踪所有分配,但其中一些分配正在逃避我的掌握。 这是泄密嫌疑人,但我无法追踪他们或知道如何解释泄密嫌疑窗口。

解决SpellCheckerSession泄漏问题?

我发现我的Activity在ICS模拟器上泄漏了。 HProf似乎显示SpellCheckerSession保持对我的Activity的引用,并且似乎有一个修复: https://github.com/android/platform_frameworks_base/commit/df3722895172e03c81787f62d922daabaad3e20b 但有没有办法解决这个问题呢? 我可以以某种方式禁用拼写检查吗?

测试Android应用程序中的内存泄漏

我最近了解到泄漏上下文会浪费多少内存,以及如何在屏幕方向更改后使用内存转储测试此类泄漏。 应该实例化和创建新活动,销毁和收集原始活动。 但是,除非我泄漏内存并且没有看到它,否则如果它开始不同的活动并且自我毁灭,则下面的活动似乎不会被收集: public class Foo extends Activity { private Button button; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); button = new Button(this); button.setOnClickListener(new OnClickListener() { public void onClick(View view) { startActivity(new Intent(Foo.this, Bar.class)); finish(); } }); setContentView(button); } protected void onDestroy() { super.onDestroy(); button.setOnClickListener(null); Log.e(“you’re it”, “isFinishing() == ” + isFinishing()); } } public class […]