实时的工具有profilling/monitoring等,实时的方法固然好,但有网友称吞吐量过高的时候工具本身都很难运行,效果不好。
离线分析工具首选MAT,可以集成到eclipse做插件使用,也可以从官网下载独立程序。
finalize的用法,程序重写finalize函数后,当gc程序运行时就会调用finalize,我们可以在必要的情况下在finalize函数中写自己想要回收的对象,将他们从绑定中解除。因为有很多对象一直都在使用中,开发者自己不去解绑,gc永远都无法回收。
调用System.gc()会强制执行垃圾回收程序,当然,如果不去调用它,当程序内存使用过高时会自动执行。
防范不良代码:
1、查询数据库后cursor没有关闭
Cursor cursor = null;
try {
cursor = getContentResolver().query(uri...);
if (cursor != null && cursor.moveToNext()) {
....
}
} finally {
if (cursor != null) {
try {
cursor.close();
} catch (Exception e) {
}
}
}
2、缓存convertView
public View getView(int position, Viewconvert View, ViewGroup parent)
初始化时,ListView会根据当前屏幕布局从BaseAdapter中取一定数量的view对象,同时ListView会将这些对象缓存起来,当ListView向上滚动的时候,原先位于最上边的listitem的view对象会被回收,然后被用来构造最新出现的listitem。这个构造过程就是由getView完成的。getView的第二个形参View convertView就是被缓存起来的listitem对象。初始化时缓存中没有对象则convertView是null。
public View getView(int position,Viewconvert View,ViewGroup parent){
View view = null;
if(convertView != null){
view = convertView;
populate(view , getItem(position));
...
}else{
view = new Xxx(...);
...
}
return view;
}
3、Bitmap对象释放内存
有时我们会手工操作Bitmap对象,如果一个Bitmap对象比较占内存,当它不再被占用的时候,可以调用Bitmao.recycle() 方法回收此对象的像素所占用的内存,但这不是必须的。
分享到:
相关推荐
本篇文章将详细探讨jProfiler7在Java内存分析上的核心功能、使用方法以及在Linux环境中的配置和应用。 1. **内存分析概述** - 内存分析是识别和解决Java应用程序中的内存泄漏、过度对象创建和内存消耗过高问题的...
Java内存分析是Java开发中非常重要的一个环节,它关乎到应用程序的性能和稳定性。"JAVA内存分析 - V1.0.0.zip" 提供了一套工具来帮助开发者深入理解并优化Java应用程序的内存使用情况。这个压缩包包含了两个关键文件...
java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存...
Java内存分析工具是Java开发过程中不可或缺的调试利器,主要用于检测和解决内存泄漏问题。内存泄漏是程序运行过程中,无法释放不再使用的内存空间,随着时间推移,会导致系统资源耗尽,性能急剧下降,甚至可能导致...
Java内存分析是一个重要的主题,尤其是在开发复杂且性能要求高的应用程序时。内存泄露是Java程序员需要密切关注的问题,因为它们可能导致系统性能下降,甚至可能导致系统崩溃。本文将深入探讨Java内存分析和内存泄露...
**Mac OS上的Java内存分析工具MAT** 在Java应用程序开发中,内存管理是至关重要的,特别是对于大型、长期运行的应用程序,内存泄漏可能导致性能下降甚至系统崩溃。为了有效地诊断和解决这些问题,开发人员需要借助...