热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

内存暴增排查分析

一次偶然间,发现测试环境iis站点内存突然间暴增,平常都是300M,这次一下子暴增到8g于是就开始了接下来的分析发现Dictionary居然有1.78g懵逼windbg分析1.看看

一次偶然间,发现测试环境iis站点内存突然间暴增,平常都是300M,这次一下子暴增到8g 于是就开始了接下来的分析

技术分享图片

发现Dictionary居然有1.78g懵逼

  windbg 分析

1. 看看当前进程的 commit 内存有多大


0:000> !address -summary
Mapping file section regions...
Mapping module regions...
Mapping PEB regions...
Mapping TEB and stack regions...
Mapping heap regions...
Mapping page heap regions...
Mapping other regions...
Mapping stack trace database regions...
Mapping activation context regions...
--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free
402 7df9`8ed48000 ( 125.975 TB) 98.42%
1239 206`619ca000 ( 2.025 TB) 99.99% 1.58%
Image
1833 0`0b792000 ( 183.570 MB) 0.01% 0.00%
Heap
36 0`02cdf000 ( 44.871 MB) 0.00% 0.00%
Stack
111 0`01240000 ( 18.250 MB) 0.00% 0.00%
Other
13 0`001e2000 ( 1.883 MB) 0.00% 0.00%
TEB
37 0`0004a000 ( 296.000 kB) 0.00% 0.00%
PEB
1 0`00001000 ( 4.000 kB) 0.00% 0.00%
--- Type Summary (for busy) ------ RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_MAPPED
326 200`00c57000 ( 2.000 TB) 98.76% 1.56%
MEM_PRIVATE
1111 6`64ebf000 ( 25.577 GB) 1.23% 0.02%
MEM_IMAGE
1833 0`0b792000 ( 183.570 MB) 0.01% 0.00%
--- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_FREE
402 7df9`8ed48000 ( 125.975 TB) 98.42%
MEM_RESERVE
431 205`5900d000 ( 2.021 TB) 99.79% 1.58%
MEM_COMMIT
2839 1`1829b000 ( 4.378 GB) 0.21% 0.00%
--- Protect Summary (for commit) - RgnCount ----------- Total Size -------- %ofBusy %ofTotal
PAGE_READWRITE
978 1`08d1c000 ( 4.138 GB) 0.20% 0.00%
PAGE_EXECUTE_READ
308 0`07428000 ( 116.156 MB) 0.01% 0.00%
PAGE_READONLY
1061 0`0487b000 ( 72.480 MB) 0.00% 0.00%
PAGE_NOACCESS
139 0`02909000 ( 41.035 MB) 0.00% 0.00%
PAGE_EXECUTE_READWRITE
41 0`00a6f000 ( 10.434 MB) 0.00% 0.00%
PAGE_WRITECOPY
273 0`004cf000 ( 4.809 MB) 0.00% 0.00%
PAGE_READWRITE
|PAGE_GUARD 37 0`00071000 ( 452.000 kB) 0.00% 0.00%
PAGE_EXECUTE_WRITECOPY
2 0`00024000 ( 144.000 kB) 0.00% 0.00%
--- Largest Region by Usage ----------- Base Address -------- Region Size ----------
Free 18b`42fc0000 7c69`2df10000 (
124.411 TB)
7dfb`9b527000 1f9`b0c13000 ( 1.975 TB)
Image 18a`
10662000 0`00d7d000 ( 13.488 MB)
Heap 18a`
13631000 0`00f5e000 ( 15.367 MB)
Stack
44`0acd0000 0`0007b000 ( 492.000 kB)
Other
185`c4a60000 0`00181000 ( 1.504 MB)
TEB
44`0ae08000 0`00002000 ( 8.000 kB)
PEB
44`0afac000 0`00001000 ( 4.000 kB)

 可以看出大概占了 4.378G,接下来再看看托管堆内存。


0:000> !eeheap -gc
Number of GC Heaps:
4
------------------------------
Heap
0 (00000185C55B4F90)
generation
0 starts at 0x00000185C6C45838
generation
1 starts at 0x00000185C6C3DC88
generation
2 starts at 0x00000185C5CB1000
ephemeral segment allocation context: none
segment begin allocated size
00000185C5CB0000 00000185C5CB1000 00000185C6EB1850
0x1200850(18876496)
Large
object heap starts at 0x00000189C5CB1000
segment begin allocated size
00000189C5CB0000 00000189C5CB1000 00000189D435D6F0
0xe6ac6f0(241878768)
0000018580000000 0000018580001000 00000185ADC5CD08 0x2dc5bd08(767933704)
0000018AE2FC0000 0000018AE2FC1000 0000018B3E878BC8
0x5b8b7bc8(1535867848)
Heap Size: Size:
0x98dc0810 (2564556816) bytes.
------------------------------
Heap
1 (00000185C56835E0)
generation
0 starts at 0x00000186C6C263D8
generation
1 starts at 0x00000186C6C18578
generation
2 starts at 0x00000186C5CB1000
ephemeral segment allocation context: none
segment begin allocated size
00000186C5CB0000 00000186C5CB1000 00000186C7293328
0x15e2328(22946600)
Large
object heap starts at 0x00000189D5CB1000
segment begin allocated size
00000189D5CB0000 00000189D5CB1000 00000189D5F53350
0x2a2350(2761552)
Heap Size: Size:
0x1884678 (25708152) bytes.
------------------------------
Heap
2 (00000185C5576960)
generation
0 starts at 0x00000187C6C3B2A0
generation
1 starts at 0x00000187C6C334E0
generation
2 starts at 0x00000187C5CB1000
ephemeral segment allocation context: none
segment begin allocated size
00000187C5CB0000 00000187C5CB1000 00000187C768E0D8
0x19dd0d8(27119832)
Large
object heap starts at 0x00000189E5CB1000
segment begin allocated size
00000189E5CB0000 00000189E5CB1000 00000189F326E728
0xd5bd728(224122664)
Heap Size: Size:
0xef9a800 (251242496) bytes.
------------------------------
Heap
3 (00000185C557E9B0)
generation
0 starts at 0x00000188C6F71D30
generation
1 starts at 0x00000188C6F4F758
generation
2 starts at 0x00000188C5CB1000
ephemeral segment allocation context: none
segment begin allocated size
00000188C5CB0000 00000188C5CB1000 00000188C7543728
0x1892728(25765672)
Large
object heap starts at 0x00000189F5CB1000
segment begin allocated size
00000189F5CB0000 00000189F5CB1000 00000189F5D310C0
0x800c0(524480)
0000018AB2FC0000 0000018AB2FC1000 0000018AE0C1CD08
0x2dc5bd08(767933704)
0000018A14590000 0000018A14591000 0000018A2B3BEF20
0x16e2df20(383967008)
Heap Size: Size:
0x4639c410 (1178190864) bytes.
------------------------------
GC Heap Size: Size:
0xef97ba98 (4019698328) bytes.

 查看托管堆


0:000> !dumpheap -stat 0000018AE2FC1000 0000018B3E878BC8
Statistics:
MT Count TotalSize Class Name
00000185c56d3570
1 30 Free
00007ffb0720ee48
1 1535867816 System.Collections.Generic.Dictionary`2+Entry[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]][]
Total
2 objects

0:000> !dumpheap -mt 00007ffb0720ee48 0000018AE2FC1000 0000018B3E878BC8
Address MT Size
0000018ae2fc1020 00007ffb0720ee48 1535867816
Statistics:
MT Count TotalSize Class Name
00007ffb0720ee48 1 1535867816 System.Collections.Generic.Dictionary`2+Entry[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]][]
Total 1 objects

0:000> !DumpHeap /d -mt 00007ffb0720ee48
Address MT Size
00000185c6a56ac8 00007ffb0720ee48 616
0000018580001020 00007ffb0720ee48 767933672
0000018ae2fc1020 00007ffb0720ee48 1535867816
00000188c6da9e30 00007ffb0720ee48 296
0000018ab2fc1020 00007ffb0720ee48 767933672
Statistics:
MT Count TotalSize Class Name
00007ffb0720ee48 5 3071736072 System.Collections.Generic.Dictionary`2+Entry[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]][]
Total 5 objects
Fragmented blocks larger than 0.5 MB:
Addr Size Followed by
00000185C6AE9878 0.6MB 00000185C6B8CAA8 System.Byte[]
00000186C6E723F0 4.1MB 00000186C72912D8 System.Byte[]
00000187C715B2B8 5.2MB 00000187C768C088 System.Byte[]
00000188C6E2E7D8 0.6MB 00000188C6ED1A08 System.Byte[]

0:000> !gcroot 0000018ae2fc1020
Thread be58:
000000440BF3B6C0 00007FFAAAE74E00 Xw.Service.ProductCategoryService.GetParentCategoryId(Int32, System.Collections.Generic.Dictionary`2, Int32 ByRef)
rdi:
-> 00000185C6A64458 System.Collections.Generic.Dictionary`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
-> 0000018AE2FC1020 System.Collections.Generic.Dictionary`2+Entry[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]][]



看到这行代价就大概知道是什么问题了,果断查询项目文件,才发现,这个方法是一个递归方法。因为数据的原因导致出现了无限递归,所以导致 System.Int32 和System.Collections.Generic.Dictionary 都很高

非常感谢博客园里面的大佬

https://www.cnblogs.com/huangxincheng/p/14830664.html

也是按照他的来一步步分析的。


推荐阅读
  • -(void)drawRect:(CGRect)rect{获得当前上下文CGContextRefctxUIGraphicsGetCurrentContext();把当前上下文状态保 ... [详细]
  • String字符串java.lang;基本标识Java字符串的一个重要特点就是字符串不可变。finalclassString没有子类字符串字面量也是一个String类的实例存储在字 ... [详细]
  • 一步一步学EF系列【4、升级篇 实体与数据库的映射】
    之前的三张为基础篇,如果不考虑架构问题,做一般的小程序,以足够用了。基本的增删改查也都有了。但是作为学习显然是不够的。通过之前三章的学习,有没有发现这样写有什么问题,有没有觉得繁琐 ... [详细]
  • iometer 1.1.0 重要特性说明之Write IO Data Pattern
    iometer1.1.0版本包含了3种WriteIODataPattern。分别是:Repeatingbytes、Pseudo-Random(2006.07.27及其之前的版本默认 ... [详细]
  • 稀松数组
    稀松数组1.稀松数组什么?在一个数组中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该数组为稀疏数组;如图,一个5*5的数组arr上只有3个有效数值 ... [详细]
  • #第一章(概率论的基本概念)##第一节(样本空间、随机事件)样本空间:随机试验E的所有基本结果组成的集合,记为$\Omega$必然事件:\(\Omega\)不可能事件:\(\var ... [详细]
  • One Stage目标检测
    在计算机视觉中,目标检测是一个难题。在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析。如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框 ... [详细]
  • Winrar大全
    极速压缩win5.0下载:win_x86_cnwin_x86_enwin5.0下载:win_x64_cn ... [详细]
  • 安全等于运算符()这个操作符和操作符执行相同的比较操作,不过可以用来判断NULL值。在两个操作数均为NULL时,其返回值为1而不为NULL;而当一个操作数为NULL时,其返回 ... [详细]
  • 示例代码:12345678910111213141ProcessEngineprocessEngineConfiguration.getProcessEngine();2Tas ... [详细]
  • HDNoip201505宽宽的笔记难度级别:B;运行时间限制:1000ms;运行空间限制:51200KB;代码长度限制:2000000B试题描述宽宽是一个很萌很萌的爱记笔记的好孩子 ... [详细]
  • SoL:裸的次小生成树。。。推荐:KuangBin巨巨的博客模版+详解   http:www.cnblogs.comkuangbinp3147329.html# ... [详细]
  • 在action中,默认的是调用execute()方法,如果想处理多个业务逻辑的话,可以在action类中写很多个类似execute方法,然后再在struts.xml中配置actio ... [详细]
  • ant vue tree没数据时候取消懒加载箭头
    机构懒加载,选人时候,如果该机构下面没人,就取消加载并且不显示箭头 ... [详细]
  • POJ2762Goingfromutovorfromvtou? 链接:http:poj.orgproblem?id2762题意:为了让他们的儿子变得更勇敢些,Jia ... [详细]
author-avatar
牧童的伙伴_168
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有