检查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中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个 ...
随机推荐
- Java 中Comparator 的使用,实现集合排序
目标:实现对Person 对象的年龄,从小到大排序 1.实现排序 package com.app; import java.util.ArrayList; import java.util.Colle ...
- 【读书笔记】iOS-UIFont-如何知道字体的PostScript名称
一,名词解释 PostScript字体: 按 PostScript 页面描述语言 (PDL) 规则定义的字体,并且只能在 PostScript 兼容的打印机上打印. 二,打开Launchpad---- ...
- spring boot 1.4.1 with jsp file sample
<!--pom.xml--> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...
- 《只是为了好玩:Linux之父林纳斯自传》
<只是为了好玩:Linux之父林纳斯自传> 基本信息 作者: (美)Linus Torvalds David Diamond 译者: 陈少芸 出版社:人民邮电出版社 ISBN:978 ...
- 软件测试作业1--描述Error
记忆犹新的错误: 上个学期选修了可视化这门课程,最后大作业用d3实现,在使用d3读取csv数据的时候出现了以下Error: 我先是在代码中读取了某csv格式的数据,并且将其存入变量root中,然后对r ...
- mongodb--与spring整合
一.spring-data-mongodb Spring Data是Spring专门用来数据处理的一个子项目,Spring Data除了spring-data-mongodb之外还包括spring-d ...
- Mysql的float类型造成的困扰总结
因为换了工作正在学习使用MySQL,今天领导提出了一个问题,如下: X列是累加值,A列是每日新增值,那么X2应该是X1+A2,而且存储过程里也是这样计算的.可是奇怪的是X2的值却总是和正确值(2396 ...
- .NET 分页
.net分页 1.存储过程create procedure 存储过程名( @pageIndex int, //第几页 @pageSize int ...
- Eclipse和MyEclipse 手动设置 Java代码 注释模板
一.目的 1. 为什么需要注释规范? 注释规范对于程序员而言尤为重要,有以下几个原因: 一个软件的生命周期中,80%的花费在于维护. 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维 ...
- JavaScript中的不可见数据类型
JS提供了一些内置对象.函数和构造器供我们编程,如Math.parseInt.Object.Array等.这些都是可见的,编程时可以使用的.比如我可以new Object 或 new Array. 有 ...