关于内存泄漏和正确的对象管理(Android/Java)
在Android Java中处理对象的正确方法是什么 我的意思是,假设我有一个Splashscreen类,然后我从这个类创建了一个对象。比如:关于内存泄漏和正确的对象管理(Android/Java),android,memory-management,memory-leaks,resources,Android,Memory Management,Memory Leaks,Resources,在Android Java中处理对象的正确方法是什么 我的意思是,假设我有一个Splashscreen类,然后我从这个类创建了一个对象。比如: SplashScreen mySplash = new SplashScreen(); mySplash.myBitmap.recycle(); mySplash.myBitmap = null; mySplash = null; 然后,在我的onCreate方法中,显示这个splashscreen,如下所示: loading_dialog.setC
SplashScreen mySplash = new SplashScreen();
mySplash.myBitmap.recycle();
mySplash.myBitmap = null;
mySplash = null;
然后,在我的onCreate方法中,显示这个splashscreen,如下所示:
loading_dialog.setContentView(mySplash);
loading_dialog.show();
..在splashscreen中,我创建了位图
加载完所有内容后,我终于摆脱了初始屏幕,如下所示:
loading_dialog.dismiss();
因此,喷溅屏不再是必需的
现在处理这个冗余对象的正确方法是什么
我应该做一些类似于:
SplashScreen mySplash = new SplashScreen();
mySplash.myBitmap.recycle();
mySplash.myBitmap = null;
mySplash = null;
或者只是
mySplash = null;
如果我这样做,是否意味着mySplash位图等中的所有内容也将设置为null
只是不确定上面哪一项是必需的,或者如果两者都不是好主意的话。目前,我没有做任何事情,我肯定这是不对的
另外,这是相关的,如果用户按下“主页”,然后重新启动应用程序,我还想显示这个splashscreen,会发生什么?如果我摆脱了它,那我就有麻烦了
很高兴听到您的建议。Java的一个主要优点是使程序员不必主动管理内存。让垃圾收集器完成它的工作。嗨@MarsAtomic,谢谢你的评论。我必须承认,我不完全理解GC。另外,由于这是一款在低资源设备上运行的游戏,我想在可以的地方释放内存。你是说我应该不去管它,不要循环使用位图或将对象设置为空?如果我不将对象设置为null,它仍然是集合的候选对象吗?谢谢看看这个。我特别喜欢这句话:在你开始优化之前,确保你有一个需要解决的问题。谢谢@MarsAtomic,我已经读过了,是的,我知道早期/过度优化是万恶之源!然而,在某款低端平板电脑设备上,当我暂停和重新启动应用程序几次、播放一段时间等时,我会有点反应迟钝,所以我正在尝试找出它是否与内存有关!