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内存性能分析(一)内存泄漏的更多相关文章
- .NET内存性能分析宝典
.NET Memory Performance Analysis 知道什么时候该担心,以及在需要担心的时候该怎么做 译者注 **作者信息:Maoni Stephens ** - 微软架构师,负责.NE ...
- 【转】一文掌握 Linux 性能分析之内存篇
[转]一文掌握 Linux 性能分析之内存篇 前面我们已经学习了 CPU 篇,这篇来看下内存篇. 01 内存信息 同样在分析内存之前,我们得知到怎么查看系统内存信息,有以下几种方法. 1.1 /pro ...
- (转)java内存分配分析/栈内存、堆内存
转自(http://blog.csdn.net/qh_java/article/details/9084091) java内存分配分析/栈内存.堆内存 java内存分配分析 本文将由浅入深详细介绍Ja ...
- Windows内存性能分析(二)性能瓶颈
内存瓶颈: 由于可用内存缺乏导致系统性能下降的现像. (一).相关的性能对象 主要考虑内存的页面操作和磁盘的I/O操作,需要考虑如下性能对象: Memory性能对象: 用于分析整个系统的内存瓶颈问题. ...
- SQL Server内存性能分析
内存概念: Working Set = Private Bytes + Shared Memory Working Set:某个进程的地址空间中,存放在物理内存的那一部分 Private Bytes: ...
- 记一次vue长列表的内存性能分析和优化
好久没写东西,博客又长草了,这段时间身心放松了好久,都没什么主题可以写了 上周接到一个需求,优化vue的一个长列表页面,忙活了很久也到尾声了,内存使用和卡顿都做了一点点优化,还算有点收获 写的有点啰嗦 ...
- 一文掌握 Linux 性能分析之内存篇
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面我们已经学 ...
- 性能分析 | Linux 内存占用分析
这篇博客主要介绍 linux 环境下,查看内存占用的两种方式:使用 ps,top等命令:查看/proc/[pid]/下的文件.文章简要介绍了命令的使用方法与一些参数意义,同时对/proc/[pid]/ ...
- perfview微软开源的cpu以及内存性能分析工具
perfview 是一个强大的分析工具,能用来分cpu,内存,磁盘io...多种指标,使用简单,功能强大 用来分析windows应用的性能问题,是一个很不错的选择 下载地址 https://githu ...
随机推荐
- GeoServer配置CORS(跨域资源共享)
当前台页面请求WMS可能会遇到浏览器以下提示(浏览器控制台): 已阻止跨源请求:同源策略禁止读取位于 http://xxx.xxx.com 的远程资源.(原因:CORS 头缺少 'Access-Con ...
- 【bootstrap】bootstrap中的tooltip的使用
先看看效果图:[当光标放在下面这个时间搜索框上时,显示一段文字:搜索时间段中的流水信息] 这样的效果,怎么实现呢? 很简单 1.引入jQuery.js和bootstrap的js和css 2.给想要有t ...
- DevExpress右键菜单使用 z
添加BarManager和popupMenu组建: 设置popupMenu组件的Manager属性: 右键点击popupMenu主键,点击Customize选项添加菜单: 然后便可添加到鼠标事件 ...
- WPA2密钥重装攻击原理分析
这两天最火爆的莫过 “WPA2被破解” 这一条大新闻了.我对其原理非常感兴趣,苦于没有找到的文献,所以就整理这么一篇,方便自己和大家理解.主要是根据目前发布的文章以及一些相关资料. 壹.WPA2的机制 ...
- linux系统中mysql自动备份脚本
mysql数据库中存储着网站最核心最宝贵的数据,如果因为不可预测的原因导致数据损坏或丢失,对一个网站的打击是毁灭性的,一次又一次的教训提醒着我们一定要做好备份,但是手工备份确实比较麻烦,每天都要手工操 ...
- Ubuntu 安装 spark
环境: Unbunt 12.04 Hadoop 2.2.x Sprak 0.9 Scala scala-2.9.0.final.tgz 步骤 1. 下载 scala 2. 解压scala,然后改动/e ...
- 赵雅智_Fragment
当我们须要动态的多界面切换的时候,就须要将UI元素和Activity融合成一个模块. 在2.3中我们一般通过各种Activity中进行跳转来实现多界面的跳转和单个界面动态改变.在4.0或以上系统中就能 ...
- vue2.0 自定义指令
Vue指令 Vue的指令以v-开头,作用在HTML元素上,将指令绑定在元素上,给绑定的元素添加一些特殊行为. 例如: <h1 v-if="yes">Yes</h1 ...
- Java集合01----ArrayList的遍历方式及应用
Java集合01----ArrayList的遍历方式及应用 前面已经学习了ArrayList的源代码,为了学以 ...
- bash 的环境配置文件
http://www.cnblogs.com/ggjucheng/archive/2012/11/01/2750179.html bash 的环境配置文件 你是否会觉得奇怪,怎么我们什么动作都没有进行 ...