关闭

169_heap的使用

标签: heap内存泄漏ddms代码检测监测进程
160人阅读 评论(0) 收藏 举报


heap的使用


ddms中有一个heap工具

可以帮我们检查代码中哪里有内存泄漏的地方

 

步骤

1.打开eclipse,切换到ddms视图,打开devicesheap视图

 

2.选中想要监测的进程,比如system_process进程

 

3.点击Devices视图界面最上面的Update Heap这个图标

 

4.点击Heap视图里面的CauseGC按钮

 

5.然后就可以看到Heap视图里面的进程的内存使用情况

 

 

 

说明:

 

1.CauseGC就相当于向虚拟机请求了一次gc操作

2.点一次就行了,之后Heap界面会定时刷新,然后就可以看到内存使用情况的变化

 

 

 

判断

 

怎么知道我们的程序有没有内存泄漏

我们就注意Heap里面的有一个Type,叫做data object,就是数据对象

这个就是我们程序里面大量的类的的对象

data object里面有一列是Total size,

就是当前进程中所有的java数据对象的内存总量

一般情况下,这个值的大小就反映了有没有内存泄漏

 

 

我们可以这样判断:

 

1.不停地操作应用,然后我们观察data objectTotal size的值

 

2.正常情况下,totalsize是会稳定在一个有限的范围里面的

也就是说代码如果是良好的,那么垃圾回收情况也是良好的,那么内存占用量就比较稳定

 

3.如果有内存泄漏的情况,那么data objecttotalsize值在每次gc后不会有明显的回落

然后随着操作次数越来越多,totalsize值也就越来越大了

到达一定的上限的时候,内存溢出了,然后进程就被kill

 

 

 

举例

 

这里我举个例子,我以system_process进程为例子

在我现在的测试环境下,system_process进程占用的内存的data objecttotalsize

大概稳定在2.22.8之间

如果超过3.55,进程就会被kill

 

所以ddmsheap视图工具可以很方便确认我们的程序是否存在内存泄漏的可能性

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0
0
查看评论

AngularJS 的基础使用

AngularJS 把应用程序数据绑定到 HTML 元素。 AngularJS 可以克隆和重复 HTML 元素。 AngularJS 可以隐藏和显示 HTML 元素。 AngularJS 可以在 HTML 元素"背后"添加代码。 AngularJS 支持输入验证。
  • zhaodongwoshini
  • zhaodongwoshini
  • 2016-11-21 23:42
  • 1223

Struts2的简单使用(一)

今天学习了一下Struts2框架的搭配~ 也简单的使用Struts2框架学习了Action和怎么使用核心配置文件struts.xml~ 主要实现了网页上的简单登录注册~ 项目结构如图: 写了俩个类,一个是pojo类,一个是action类~,还有俩个jsp,分别代表登录与注册~ pojo类顾名...
  • qq_33642117
  • qq_33642117
  • 2016-07-11 20:51
  • 1201

MyBatis基本使用步骤

MyBatis是一个数据持久层(ORM)框架。把实体 类和SQL语句之间建立了映射关系,是一种半自 动化的ORM实现。MyBATIS需要开发人员自己来写sql语句,这可以增加了程序的灵活性,在一定程度上可以作为ORM的一种补充。 什么情况下不适合全自动化框架: 1)系统的部分或全部数据来自现有数...
  • archer119
  • archer119
  • 2016-06-01 23:27
  • 3353

weblogic使用简介

 (1)安装weblogic,默认安装即可;  (2)在开始菜单中选择Weblogic 的Configuration新建weblogic配置     在BEA Weblogic Congiguration Wiazard 中默认 ...
  • hxmcGu
  • hxmcGu
  • 2007-06-25 13:35
  • 3757

构造函数的用法学习

1。如果不为类编写构造函数,编译器就会创建一个默认的构造函数,运行时会在创建新对象时调用它。 2。构造函数互相之间的可链接关系using System; namespace Webtest{     ///   ...
  • lovelxj
  • lovelxj
  • 2005-02-16 11:56
  • 2247

ExtJS4 Ext用法汇总

Ext单例工具类用法汇总: Methods: 1、Ext.widget( [String name], [Object config]) : Object     参数:name:xtype名称;config:配置对象  &#...
  • qq_17505335
  • qq_17505335
  • 2016-08-30 09:45
  • 329

在Oracle中索引的使用

索引是由Oracle维护的可选结构,为数据提供快速的访问。准确地判断在什么地方需要使用索引是困难的,使用索引有利于调节检索速度。 当建立一个索引时,必须指定用于跟踪的表名以及一个或多个表列。一旦建立了索引,在用户表中建立、更改和删除数据库时, Oracle就自动地维护索引。创建索引时,下列准则将帮助...
  • ysyn1209
  • ysyn1209
  • 2016-04-22 23:44
  • 7245

eclipse使用大全

基本设置部分: 1、设置代码的字体类型和大小: Window -> Preferences -> General -> Appearance -> Content Assist -> Colors and Fornts,只需修改 Basic 里面的 Text Fon...
  • wl4066261
  • wl4066261
  • 2016-12-20 00:08
  • 1974

cookie简单实用的使用方法

cookie的由来:             在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的...
  • qq_35488412
  • qq_35488412
  • 2017-03-09 16:07
  • 1747

Eclipse Debug的一些用法

转自:http://mgoann.iteye.com/blog/1396637 Debug视图 认识debug视图,红色部分框为线程堆栈视图,黄色部分框为表达式、断点、变量视图,蓝色部分为代码视图。  线程堆栈视图 分别介绍一下这几个按钮的含义: 1.表示...
  • u012917700
  • u012917700
  • 2015-09-03 12:56
  • 2661
    个人资料
    • 访问:98038次
    • 积分:6199
    • 等级:
    • 排名:第4762名
    • 原创:560篇
    • 转载:0篇
    • 译文:0篇
    • 评论:20条
    文章分类
    最新评论