`

java内存分析

    博客分类:
  • work
 
阅读更多

实时的工具有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版本

    本篇文章将详细探讨jProfiler7在Java内存分析上的核心功能、使用方法以及在Linux环境中的配置和应用。 1. **内存分析概述** - 内存分析是识别和解决Java应用程序中的内存泄漏、过度对象创建和内存消耗过高问题的...

    JAVA内存分析 - V1.0.0.zip

    Java内存分析是Java开发中非常重要的一个环节,它关乎到应用程序的性能和稳定性。"JAVA内存分析 - V1.0.0.zip" 提供了一套工具来帮助开发者深入理解并优化Java应用程序的内存使用情况。这个压缩包包含了两个关键文件...

    java内存解析(讲的很清楚的视频)

    java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存解析(讲的很清楚的视频)java内存...

    Java 内存分析工具

    Java内存分析工具是Java开发过程中不可或缺的调试利器,主要用于检测和解决内存泄漏问题。内存泄漏是程序运行过程中,无法释放不再使用的内存空间,随着时间推移,会导致系统资源耗尽,性能急剧下降,甚至可能导致...

    java内存分析-内存泄露问题.rar

    Java内存分析是一个重要的主题,尤其是在开发复杂且性能要求高的应用程序时。内存泄露是Java程序员需要密切关注的问题,因为它们可能导致系统性能下降,甚至可能导致系统崩溃。本文将深入探讨Java内存分析和内存泄露...

    Mac OS java内存分析工具MAT

    **Mac OS上的Java内存分析工具MAT** 在Java应用程序开发中,内存管理是至关重要的,特别是对于大型、长期运行的应用程序,内存泄漏可能导致性能下降甚至系统崩溃。为了有效地诊断和解决这些问题,开发人员需要借助...

Global site tag (gtag.js) - Google Analytics