检查c# 内存泄漏
c# 内存泄漏检查心得
系统环境 windows 7 x64
检查工具:ANTS Memory Profiler 7 或者 .NET Memory Profiler 4.0
开发的软件为winform / windows service 形式,form配置task和trigger ,service使用quartz定时调度任务。
框架:.net framework 4.0/4.5
可能有内存泄漏问题组件:
- npoi 2.0.1
- System.Data.SQLite.1.0.88.0 准备升级致 System.Data.SQLite.1.0.89.0
- quartz.net
quartz.net 中有 dbcommond 没有dispose 会造成SqliteParameter中的托管内存未释放
connection只进行close,未dispose也会造成内存泄漏
检查出的内存泄漏对象
- Process.GetCurrentProcess() 在commonlogging中频繁调用,居然占用很大内存,20分钟有83万个对象之多,有49个对象未释放。后改为静态变量引用获得的当前线程
- IUnityContainer container = GetOrCreateSessionWrapper().unity.CreateChildContainer();
也许是设计上的bug,在web下,session request各有自己的ioc容器, 且为父容器与子容器的关系,而在winform下,Context的request和session写成没有缓存时,会在每次调用时创建,造成频繁创建子容器,而又无法象web一样释放request级别的所有对象。
- 查了2个多星期,交付日期越来越近,更新到quartz.net 2.2 ,quartz net 2.2中仍有 IDbCommond 没有dispose 会造成SqliteParameter中的托管内存未释放
- quartz.net 2.2 重写jobstore,获取idbconnection时从线程缓存中获取,并且不关闭connection, 这样可以避免 Sqlite3, List<SQLiteFunction>对象不断变大的问题。
- 过程中也发现有大量非托管内存泄漏,也可以尝试 Marshal.Clean..的相关方法释放(目前还没有办法验证)。
检查c# 内存泄漏的更多相关文章
- LeakCanary 来检查 Android 内存泄漏
LeakCanary 来检查 Android 内存泄漏
- VS环境下C++如何检查是否内存泄漏
c++如何检查是否内存泄漏 今天在做OpenGL引擎的时候,突然想到检查一下内存泄漏.具体是我做了一个渲染类Render,将所有世界中存在的物体的指针都存放在这个类中.于是我不免担心,在Render中 ...
- monkey测试===通过monkey测试检查app内存泄漏和cpu占用
最近一直在研究monkey测试.网上资料很多,但都是一个抄一个的.原创的很少 我把检查app内存泄漏的情况梳理一下: 参考资料: Monkey测试策略:https://testerhome.com/t ...
- 利用 LeakCanary 来检查 Android 内存泄漏
前言 你被概率性的 OOM 困扰么?有时候,OOM 像幽灵一样,挥之不去,可真想把它揪出来时,又捉之不着.或许,是时候用 LeakCanary 来诊断一下了.它是一个用来检查 Android 下内存泄 ...
- valgrind检查代码内存泄漏,5种内存泄漏情况
摘要: valgrind是linux下用于调试程序和查找内存泄露的常用工具.valgrind会报告5种内存泄露,"definitely lost", "indirectl ...
- valgrind检查C++内存泄漏
valgrind --tool=memcheck --leak-check=full ./httptest Valgrind 使用 用法: valgrind [options] prog-and-ar ...
- 【腾讯优测干货分享】Android内存泄漏的简单检查与分析方法
本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d14047603a5bf1242ad01b 导语 内存泄漏问题大约是An ...
- Java内存泄漏分析与解决方案
Java内存泄漏是每个Java程序员都会遇到的问题,程序在本地运行一切正常,可是布署到远端就会出现内存无限制的增长,最后系统瘫痪,那么如何最快最好的检测程序的稳定性,防止系统崩盘,作者用自已的亲身经历 ...
- Java内存泄漏分析和预防
1. 什么是内存泄漏?有什么危害 书面说法: 内存泄漏:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着. 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个 ...
随机推荐
- 2015年第12本(英文第8本):the Old Man and the Sea 老人与海
书名:The Old Man and The Sea(老人与海) 作者:Ernest Hemingway 单词数:2.7万 不重复单词数:2600 首万词不重复单词数:1500 蓝思值:940 阅读时 ...
- IOS 自定义按钮(代码实现)+九宫格
在一些下载应用里整个页面都是按钮,有好多好多,但是仔细观察不难发现他们很有规律.就像下面一样
- iOS开发网络篇—NSURLConnection基本使用(二)
1.常用的类 NSURL:请求地址 NSURLRequest:一个NSURLRequest对象就代表一个请求,它包含的信息有: 一个NSURL对象 请求方法.请求头.请 ...
- android activity 管理器AMS----概述
AMS & WMS,应该是app端打交道最多的2个framwork层的service. ActivityManagerService 是android提供给用于管理Activity运行状态的系 ...
- 开源项目go2o - golang版的o2o项目
发一个github上唯一用golang实现的o2o项目 What's Go2o Golang combine simple o2o DDD domain-driven design realizati ...
- rails关于utf8问题-------------------utf8申明必须置顶
utf-8必须置顶,如果放在其他位置,会导致后面如果遇到中文无法解析,然后报其他乱七八糟的错误,比如不能连接数据库,比如语法错误......这种错误不好找,切记!!! 出错代码: #!/bin/env ...
- strcpy
/********************** *C语言标准库函数strcpy的一种典型的工业级的最简实现 *返回值:目标串的地址. *对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返 ...
- TCP面向连接网络编程
一 TCP&UDP协议 TCP,Tranfer Control Protocol,是一种面向连接的保证可靠传输的协议.通过TCP协议传输,得到的是一个顺序的无差错的数据流.发送方和接收方的成对 ...
- MongoDB(一)
问题解决 1.由于目标计算机积极拒绝 无法连接 原因:还没有启动mongodb,就使用mongo命令 解决方法:在bin目录下输入 mongod --dbpath XXXX/data 然后在输入 mo ...
- linux下RTNETLINK answers: File exists的解决方案
重启网卡时 出现 :RTNETLINK answers: File exists 提示 以下是网卡出来错误的解决方法: 第一种: 和 NetworkManager 服务有冲突,这个好解决,直接关闭 ...