Windows性能计数器分析性能监视器的使用
Posted abbyLiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows性能计数器分析性能监视器的使用相关的知识,希望对你有一定的参考价值。
判断内存性能表现主要是为了解决如下两个问题:
1. 当前web应用是否存在内存泄漏,如果有,问题的程度有多大?
2. 如果web应用的代码无法进一步改进,当前web应用所在的服务器是否存在内存上的瓶颈,是否需要增加内存数量来提高内存?
一、内存泄漏及判断
(一)、什么是内存泄漏?
程序都需要装载在内存中才能运行,退出的时候将内存返还给系统,有两种返还方式:
1. 自行返还: 程序员编写代码的时候返还,如C++代码。
2. 自动返还: 由支持程序运行的服务平台定期自动返还给系统,如Java、.Net等。
事实上,无论以上哪种方式,程序都有可能未把自己使用的内存返回给系统,从而导致之后的程序无法再使用这些内存,这些应该返还而没有返还的内存就像从管道漏掉了一样。
因为web程序都是持续不断的运行,如果代码存在内存泄漏的问题,泄漏的内存就会越来越多,越来越严重。导致系统可用的内存资源越来越少,系统性能越来越差,用户感受到的响应时间越来越慢。
(二)、性能计数器与内存泄漏
关注Process(进程)性能对象的如下几个计数器:
Handle Count(句柄数量): 进程的每个线程当前打开的句柄总数。
Thread Count(线程数量):线程的总数。
Virtual Bytes(虚拟内存字节数): 见后面关于虚拟内存的说明。
Working Set(工作集): 和当前进程有关的那一部分物理内存。
Private Byte(私有数据字节数): 此进程无法与其他进程共享的字节数量。
虚拟内存: 计算机内存有限,需要使用内存的程序非常多,大家都把需要的代码和数据全部放在内存中是吃不消的。所以操作系统在磁盘上也为程序开辟一块存储的地盘,当作内存使用,这就是虚拟内存。
可能存在内存泄漏的情况:
1. 一般来说:Virtual Bytes 应该远大于Working Set。如果:Virtual Bytes 增长较快,Working Set增长较少, 则可能存在内存泄漏的情况。
2. 以上所有性能计数器在测试期间数值持续增长,而测试停止后仍然维持在高水平,则可能存在内存泄漏。
(三)、使用工具软件测试代码是否存在内存泄漏情况
如JProbe套件、Rational Purify、Leakdiag、BoundsChecker和CLRProfiler等软件可以在代码不那么庞大的时候就进行单元测试、组件测试,不让问题积累起来。
以上是关于Windows性能计数器分析性能监视器的使用的主要内容,如果未能解决你的问题,请参考以下文章