Dotmemory 内存分析工具

教程一、开始学习dotmemory

在本教程中,我们将学习如何运行dotMemory内存快照。此外,我们将简要地看看dotMemory的用户界面和基本分析的概念。考虑dotMemory本教程作为起点

基本条款:

你可能会问:“什么是内存快照和为什么我要学他们?”这是一个很好的时间来达成一些内存分析 您将在本教程中遇到。

从内存的角度来看,应用程序由连续的工作为新对象分配内存和释放内存的对象不再使用的应用程序。对象分配一个接一个地在所谓的托管堆(关于内存管理.net,遵循这个链接)。在此基础上,我们有两个基本操作内存分析器必须能够做:

1、  得到一个内存快照。快照是一个即时托管堆的形象。每个快照包含信息的所有对象,应用程序在内存中分配此刻你点击获取快照按钮。

2、  收集交通信息记忆。交通向您展示多少内存分配内存和释放字节/秒。这个信息也是非常有价值的,因为它允许您了解应用程序的动态执行。

你收集的时间在交通和快照(或者,换句话说,概要文件应用程序)被称为分析会话。
当然,还有其他一些条款,你会熟悉而教程。但是现在这足以理解发生了什么在接下来的几个步骤。让我们开始吧!

内容:

简单应用程序

1、  打开dotmemory

2、  得到一个快照

3、  熟悉快照的概述

4、  内存分析入门

5、  熟悉用户界面

首先,我们需要一个应用程序概要分析。通过一系列dotMemory教程,我们将使用一个用c#编写的应用程序。这模拟典型的康威的游戏生活,你可能知道。(如果不是,请检查维基百科。这不会花费很多时间,但将使更容易理解教程。)所以,在我们开始之前,请下载并解压缩档案与应用。

步骤一、1、运行dotmemory程序

2、  单击Profile按钮并选择我们的生活游戏程序是独立的应用程序。

3、 在分析器配置窗口

a.在应用程序中,指定我们的生活游戏可执行文件的路径。建议您总是概要文件版本构建的应用程序。
b.打开页面上的所有的复选框。我们将更详细地谈论他们在接下来的教程。
这就是窗户应该看起来像在你指定的选项:

4、单击Run启动分析会话。这将运行我们的应用程序并打开dotMemory主要分析页面

步骤二、得到一个快照

一旦应用程序正在运行,我们可以得到一个内存快照。在这个操作中最重要的事情是选择正确的时刻。你记住,一个快照的即时图像应用的托管堆。因此,拍摄快照之前你应该做的第一件事就是把你的应用程序状态你感兴趣。举例来说,如果我们想要看一下创建的对象生活的游戏应用程序启动之后,我们必须得到一个快照在采取任何行动之前应用。相反,如果我们需要知道对象是动态创建的,我们必须采取一个快照后单击“开始”的应用程序。
控制分析过程中,主要dotMemory页面包含一个按钮在页面的顶部。

1、  让我们假设我们需要时分配信息对象生命运行的游戏。因此,在应用程序点击开始按钮,让游戏运行一段时间

2、  单击“Get Snapshot”按钮,得到一个快照信息

3、  关闭游戏程序结束性能分析过程

4、  查看dotMemory。主页现在包含快照的基本信息。

242.34 MB总意味着应用程序消耗242.34 MB的内存。这个尺寸等于Windows任务管理器的私有字节——内存要求的一个过程。总额包括:

a. Unmanaged memory  非托管内存——内存分配在托管堆之外,而不是由垃圾收集器。一般来说,这是所需要的内存.net CLR,动态库、图形缓冲区(特别是大WPF应用程序集中使用图形),等等。这部分内存分析器无法分析。

b. NET Free memory空闲内存——免费托管堆中的内存的数量(不使用的应用程序)。

c. . NET, used 显示为蓝色栏)——使用托管堆中的内存使用的应用程序。这是唯一的一部分记忆。网络允许您处理。出于这个原因,它也是唯一的一部分,你能够分析分析器。

让我们看一看更详细的快照。要做到这一点,点击快照# 1链接。

步骤三、熟悉快照概述

你看到后的第一件事打开快照是快照概述页面。页面显示热点在快照使用一些漂亮的图。

The Largest Size:最大的尺寸图展示的对象类型,消耗内存的主要部分。

The Largest Retained Size:最大的保留尺寸图展示您的关键对象——那些保存在内存中所有其他应用程序中的对象

The Heaps Fragmentation :托管堆的堆Fragmentationdiagram显示了碎片部分:代1、2和大对象堆。
dotMemory自动检查快照最常见类型的内存问题。这些检查的结果检查区域所示,它由一系列的检查:稀疏阵列,事件处理程序泄漏等等。

1、  单击“Largest Size link”, 点击链接的最大尺寸。这将向您展示所有托管堆中的对象。

步骤四、内存分析入门

我们继续下去之前,让我们来一个小绕道和谈论的对象存储在内存中。这是需要更好的理解实际上dotMemory显示。

对象在内存中
主要的部分应用程序所消耗的内存分配给应用程序的对象。对象存储数据和引用其他对象。一个对象及其引用一个对象图。例如,图片类的一个对象将存储id字段(长简单类型)本身和参考其他领域(对象)。

应用程序根
*应用根的表是由运行时处理。
当你的应用程序需要的内存。净的垃圾收集器(GC)决定和删除不再需要的对象。要做到这一点,GC将每个对象的图根*,即静态字段、局部变量和外部处理。如果从任何根对象是遥不可及的,它被认为是不需要从内存中删除。在下面的示例中,D和F对象从内存将被删除,因为他们无法访问应用程序的根。

保留
这里我们来保留的关键概念。
一条从根到一个对象可能会通过许多其他对象。如果所有路径对象B通过对象,然后调用的统治者。换句话说,B是只保留在内存中,如果执行垃圾收集,B也将垃圾收集。这就是为什么每个对象的最重要的参数是保留对象的大小。在dotMemory,这个参数被称为保留字节。例如,在下面的例子中C的对象保留632个字节。对象B不仅仅是保留C;因此,它不包括在计算。

让我们回到dotMemory看看打开类型列表视图。这种观点目前向您展示所有对象在堆中,按他们只保留的内存数量。正如您可以看到的,主要由System.Windows.Shapes保留一部分。椭圆类(很显然,这些都是我们使用可视化的椭圆形状的游戏生活细胞)。该类型的对象保留11868900字节的内存,而消耗3862600字节。

步骤五、熟悉用户界面

1、 请看左边dotMemory窗口的一部分。这是分析路径,显示你所有的调查步骤

每项分析路径是你分析的主题。正如您可以看到的,你开始剖析GameOfLife。exe(步骤1),然后你打开快照# 1(第二步),最后(第三步)你问dotMemory向您展示所有对象在堆中。
即使是一个小小的应用程序创建许多对象,试图分析每个对象分别将不会非常有效。这就是为什么你的分析的主体dotMemory就是所谓的对象集。

对象集是由一个特定的条件选择的对象数。为了便于理解,认为一个对象集的一些查询的结果*(非常类似于SQL查询)。例如,您可以告诉dotMemory类似“选择所有对象由每年的();和提升为创2”,或“选择所有对象在内存中保留通过实例”,等等。

2、 可以从不同的角度检查每个对象集称为视图。查看列表中占据了屏幕的主要部分。类型列表视图,显示了一个简单的列表中的对象集。其他视图可以显示其他信息选择的设置。例如,该集团的绝对主力军视图将显示您保留选择的对象在内存中;该组织通过创建堆栈跟踪视图将显示您什么叫创建了对象,等等

3、 如前所述,每个主题分析可能导致你到另一个话题。例如,我们看到System.Windows.Shapes。椭圆类保留大部分的记忆,我们想知道它实际上保留对象。要做到这一点,打开上下文菜单System.Windows.Shapes.Elipse 对象并选择打开对象保留这组。

4、 这将打开对象集与保留对象的类型列表视图。
你刚才所做的是要求dotMemory”选择所有System.Windows.Shapes.Ellipse类的对象专门聘请的对象”。

分析路径现在包含两个主题:
Elipse.在这一步中,从所有对象,dotMemory 只选择System.Windows.Shapes.Elipse对象

Retained Object。在这一步中,dotMemory显示所有对象System.Windows.Shapes.Elipse聘请的对象
以这种方式,遵循从一个话题转到另一个分析和检查它们在不同的视图,你搬到你的记忆问题的原因。

5、实验dotMemory一点。例如,确定调用源自GameOfLife的对象。细胞类。

Dotmemory 内存分析工具的更多相关文章

  1. Dotmemory 内存分析工具的操作手册

    教程一.开始学习dotmemory 在本教程中,我们将学习如何运行dotMemory内存快照.此外,我们将简要地看看dotMemory的用户界面和基本分析的概念.考虑dotMemory本教程作为起点 ...

  2. .NET内存分析工具-dotMemory

    .NET内存分析工具-dotMemory 1.介绍 官网链接 引言 程序内存占用较大?内存溢出?需要分析生产环境程序怎么办? dotMemory 使您可以分析各种 .NET 和 .NET Core应用 ...

  3. [原创]推荐一款强大的.NET程序内存分析工具.NET Memory Profiler

    [原创]推荐一款强大的.NET程序内存分析工具.NET Memory Profiler 1 官方网站:http://memprofiler.com/2 下载地址:http://memprofiler. ...

  4. JS内存泄漏 和Chrome 内存分析工具简介(摘)

    原文地址:http://web.jobbole.com/88463/ JavaScript 中 4 种常见的内存泄露陷阱   原文:Sebastián Peyrott 译文:伯乐在线专栏作者 - AR ...

  5. Android 内存分析工具 MAT(Memory Analyzer Tool)

    如果使用DDMS确实发现了我们的程序中存在内存泄漏,那又如何定位到具体出现问题的代码片段,最终找到问题所在呢?如果从头到尾的分析代码逻辑,那肯定 会把人逼疯,特别是在维护别人写的代码的时候.这里介绍一 ...

  6. Android内存分析工具DDMS heap + MAT 安装和使用

    一  Java内存分析工具扫盲 如果像我一样一点都不了解,可以先进行内存分析工具扫盲   MAT介绍:     Eclipse Memory Analyzer(MAT)一个功能丰富的 JAVA 堆转储 ...

  7. Lua内存分析工具

    最近给公司写了一个lua内存分析工具,可以非常方便的分析出Lua内存泄露问题,有图形化界面操作,方便手机端上传快照等功能 内存分析我是在c语言端写的,也有人写过lua端的分析工具,也蛮好用的,不过lu ...

  8. Android内存优化(三)详解内存分析工具MAT

    前言 在这个系列的前四篇文章中,我分别介绍了DVM.ART.内存泄漏和内存检测工具的相关知识点,这一篇我们通过一个小例子,来学习如何使用内存分析工具MAT. 1.概述 在进行内存分析时,我们可以使用M ...

  9. Eclipse MAT内存分析工具(Memory Analyzer Tool)

    MAT内存分析工具 MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器.可以用于查找内存泄露以及查看内存消耗情况.MAT是基于Eclipse开发的,是一款免费的性能分 ...

随机推荐

  1. MyBatis框架-ResultMap节点

    需求:查询结果要求显示用户名,用户密码,用户的角色 因为在用户表中只有用户角色码值,没有对应的名称,角色名称是在码表smbms_role表中,这时我们就需要联表查询了. 之前我们使用的是给查询结果字段 ...

  2. go 学习 (二):基本语法

    一.数据类型 布尔型:布尔型的值只可以是常量 true 或者 false.eg:var bo bool = true.布尔型无法参与数值运算,也无法与其他类型进行转换 数字类型:整型 int .浮点型 ...

  3. PostgreSQL JSON 处理

    1.JSON类型    PostgreSQL支持JSON和JSONB.这两种类型在使用上几乎完全一致,主要区别是: (1)JSON类型把输入的数据原封不动的存放到数据库中.JSONB类型在存放时把JS ...

  4. [转载]XML非法字符的处理

    https://blog.csdn.net/qq_36330228/article/details/84779390 static void Main(string[] args) { string ...

  5. 从TEB到PEB再到SEH(一)

    什么是TEB? TEB(Thread Environment Block,线程环境块) 线程环境块中存放着进程中所有线程的各种信息 这里我们了解到了TEB即为线程环境块, 进程中每一条线程都对应着的自 ...

  6. cube.js 新版本试用preosto

    cube.js 新的版本添加了更多的数据库的支持,但是目前cubejs-cli 以及官方文档问题还挺多,使用不清晰,文档有明显的错误 以下演示presto 数据库的使用 环境准备 安装新版本的cube ...

  7. 【区间DP】加分二叉树

    https://www.luogu.org/problemnew/show/P1040#sub 题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为 ...

  8. 前端微信小程序资讯类仿今日头条微信小程序

    需求描述及交互分析设计思路和相关知识点新闻频道滑动效果设计首页新闻内容设计首页新闻详情页设计我的界面列表式导航设计系统设置二级界面设计 设计思路(1)设计底部标签导航,准备好底部标签导航的图标和建立相 ...

  9. 二分法python实现

    聚会游戏,一个人想一个数,其他人来猜,然后告诉你猜大了还是小了,直到猜到这个数. 二分法和猜数游戏类似,只不过猜的时候一定猜最中间的那个数,折半查找所需内容,就数组来说,数组越长,梯度下降越快,二分查 ...

  10. EasyEarth三维可视化解决方案——智慧河长

    EasyEarth—— 为河长装上“千里眼.顺风耳” 为各级河长办应急指挥.任务指派. 实绩考核提供快速直观的 高效.精准.智能化决策平台. 河长制背景 我国治水工作呈现出新老问题交织态势,河湖管理保 ...