打开概要分析后,首先会出现这样一个对话框
[img]http://dl.iteye.com/upload/attachment/431520/4ec977e6-f635-3815-8724-c1837645ba63.gif[/img]
它分为两部分,一部分是内存,监控的是内存。另一部分是性能,也就是CPU占用率
内存部分有两个分项,一个是实时显示当前的内存分配情况,一个是记录生成对象的语句。
前者很明确,而后者则是在显示具体对象分配情况时,还能在旁边显示导致分配内存的代码,双击代码可直接打开源文件
Profile本身非常消耗资源,应该根据需要打开相应的项。确认后将可以看到上排的按钮被激活了。
[img]http://dl.iteye.com/upload/attachment/431522/10fa5de6-0a3b-363a-bef0-d26b27163227.gif[/img]
按钮由左到右分别是:
继续:从暂挂状态恢复
暂挂:暂停Profile,程序也会暂停。这时可以慢慢进行分析。
停止:终止Profile以及程序
内存回收:立即执行gc
制作内存快照:将当前的内存分配情况记录下来。必须记录两个内存快照才能使用下面的两个功能。快照的内容需要双击查看。
查找闲置对象:实际上就是将两个快照对比,找出它们的不同
查看分配跟踪:显示两个快照之间执行了那些需要分配内存的语句
内存概要分析只能让你看到整个内存的分配情况,实例数量的多少,总共创建实例的数量,但看不到引用数。
你只能通过观察当前实例数量来判断是否产生内存泄露,通过观察总共创建实例的数量来判断是否在不断重复创建同一个东西
查找闲置对象的功能看起来貌似找不出内存泄露,实际上,你只要在开启的时候留下一个快照,运行一堆东西然后删光再来一个,
两者对比就可以看到到底是那些东西创建出来没被删除了。因此它并不辱此名。
剩下的两个按钮则是针对性能分析的,第一个是清空数据重来,第二个是取得当前的性能快照,两者配合也可以截出一个区间来。
这里同时显示了时间总量和平均时间,并按照自身时间(只算自己执行的代码)和累计时间(也包括自己调用的方法的时间)分别显示,
如果某个方法写的很烂,它超长的自身时间就会被显示出来。而通过累计时间的对比,也可以看出各个功能模块彼此对性能的消耗差别,
帮助找到优化的重点。
每一方法都可以点击查看它调用的方法,将会一层一层看到所有方法的CPU占用比率,最终就可以慢慢找到隐藏着的性能占用大户。
诸如你看到有一项的累计时间特别大,就一直往里面点,找占用最大的那一个,顺利的话就能找到病源了。
Profile是个非常好的东西,这个东西和图表组件一样,是FB完全版的额外内容,要算价格的话是很贵的。所以能用的话就要利用上。
[img]http://dl.iteye.com/upload/attachment/431520/4ec977e6-f635-3815-8724-c1837645ba63.gif[/img]
它分为两部分,一部分是内存,监控的是内存。另一部分是性能,也就是CPU占用率
内存部分有两个分项,一个是实时显示当前的内存分配情况,一个是记录生成对象的语句。
前者很明确,而后者则是在显示具体对象分配情况时,还能在旁边显示导致分配内存的代码,双击代码可直接打开源文件
Profile本身非常消耗资源,应该根据需要打开相应的项。确认后将可以看到上排的按钮被激活了。
[img]http://dl.iteye.com/upload/attachment/431522/10fa5de6-0a3b-363a-bef0-d26b27163227.gif[/img]
按钮由左到右分别是:
继续:从暂挂状态恢复
暂挂:暂停Profile,程序也会暂停。这时可以慢慢进行分析。
停止:终止Profile以及程序
内存回收:立即执行gc
制作内存快照:将当前的内存分配情况记录下来。必须记录两个内存快照才能使用下面的两个功能。快照的内容需要双击查看。
查找闲置对象:实际上就是将两个快照对比,找出它们的不同
查看分配跟踪:显示两个快照之间执行了那些需要分配内存的语句
内存概要分析只能让你看到整个内存的分配情况,实例数量的多少,总共创建实例的数量,但看不到引用数。
你只能通过观察当前实例数量来判断是否产生内存泄露,通过观察总共创建实例的数量来判断是否在不断重复创建同一个东西
查找闲置对象的功能看起来貌似找不出内存泄露,实际上,你只要在开启的时候留下一个快照,运行一堆东西然后删光再来一个,
两者对比就可以看到到底是那些东西创建出来没被删除了。因此它并不辱此名。
剩下的两个按钮则是针对性能分析的,第一个是清空数据重来,第二个是取得当前的性能快照,两者配合也可以截出一个区间来。
这里同时显示了时间总量和平均时间,并按照自身时间(只算自己执行的代码)和累计时间(也包括自己调用的方法的时间)分别显示,
如果某个方法写的很烂,它超长的自身时间就会被显示出来。而通过累计时间的对比,也可以看出各个功能模块彼此对性能的消耗差别,
帮助找到优化的重点。
每一方法都可以点击查看它调用的方法,将会一层一层看到所有方法的CPU占用比率,最终就可以慢慢找到隐藏着的性能占用大户。
诸如你看到有一项的累计时间特别大,就一直往里面点,找占用最大的那一个,顺利的话就能找到病源了。
Profile是个非常好的东西,这个东西和图表组件一样,是FB完全版的额外内容,要算价格的话是很贵的。所以能用的话就要利用上。