诊断工具——找到泄漏点

news/2024/12/16 19:39:04/文章来源:https://www.cnblogs.com/chengcanghai/p/18611013

C#若出现内存泄漏时可通过如下方式进行查找。

多次运行后在VS的诊断工具中截取内存快照,

然后点开内存快照,查看托管内存信息,如下图:

 

上图中PerspectiveViewModel是PerspectiveView页面的VM,理论上只有打开它时才会创建1个,离开这个页面时它会被GC回收。

 

但通过多次进入PerspectiveView来看,它的VM并没有被正常回收,导致其VM数量不断增加。如此在所有存在的PerspectiveViewModel中都可能会响应某一个事件,而此事件若是使用的某一个当前的其它类型实例,就有可能造成未知错误。

如PerspectiveView的实例现在存在3个,分别是PerspectiveView1、PerspectiveView2、PerspectiveView3,它们都持有一个原来宽度分别为w1=11,w2=12,w3=13,而传入到内部方法的变量为a1数组,它的宽度为大于w3,那么就会造成“index out of range”的错误。

 

回到上图,从图上为展开圈中的的路径显示情况,从上可以清楚的看到问题是由ProcessIndexStack造成的此问题。然后回到class中找到ProcessIndexStack方法或变量产生问题的原因(图中为方法),解决之即可。

图上的问题是由于某人在ProcessIndexStack方法中使用了SemaphoreSlim,但在使用完成后并没有将它及时Release,导致它所在的PerspectiveViewModel不能被GC回收,于是就会不断实例化PerspectiveViewModel。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853927.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海山数据库(He3DB)源码解读:T_DropRoleSetStmt原理浅析

一、概述DropRoleStmt 表示删除角色的 DDL 语句。。 二、DropRole 命令的执行流程PostgresMain exec_simple_query →执行简单的 SQL 查询; StartTransactionCommand → 开始事务; pg_parse_query →解析为内部的抽象语法树(AST); PortalRun standard_ProcessUtility →权限…

【Adobe Dimension 2024下载与安装】

1、安装包 我用夸克网盘分享了「Dimension 2024」 链接:下载地址 2、安装教程(安装前关闭系统防护) 1) 下载软件安装包,双击Set-up.exe安装2) 修改安装目录,点击继续3) 安装完成,点击启动4) 启动程序

【教程】任务管理(高级)打造完整的项目管理平台

通过循序渐进的功能升级,你将打造一个强大的管理系统,让团队协作更高效、流程更智能。前言 亲爱的读者,恭喜你已经成功搭建了基础的任务管理系统!不过,这仅仅是开始。就像盖房子一样,我们已经打好了地基,接下来要一层层建起更高的楼层,让这个系统变得更加完善和强大。 …

阿里云服务器-centos7-ARL灯塔搭建

以阿里云centos7服务器为例,快速搭建arl灯塔系统 一、安装doker环境 已有doker环境的可以更新或者跳过,自行操作 没有安装过doker环境的参考以下步骤: 1.1 安装docker所需要的依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2这是一个在基于 yum 包管理…

24-12-16PHP大作业步骤!!!

一:先在自己的本地数据库里新建一个叫dzy的数据库,里面建有四个表,下面是建表的代码 #用户表 CREATE TABLE user( id int(11) not NULL PRIMARY KEY auto_increment, username VARCHAR(30) not NULL UNIQUE, email VARCHAR(30) not null, password VARCHAR(100) not null );…

As启动虚拟机报错

当前用户下这个目录新建文件:.android advancedFeatures.ini Vulkan = off GLDirectMem = on

AI应用实战课学习总结(1)必备AI基础理论

我最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。今天是我们的第一站,必备的AI基础理论,它是后续应用实践的基础。大家好,我是Edison。 由于公司的愿景逐渐调整为ONE Tech Company,公司的IT战略也逐渐地朝着Data & AI Driven发展,因此近半…

服务器插内存条

1.介绍 内存条是数量不同对应不同的插卡顺序 插入顺序跟主板的类型有关,不同型号的主板对应不同的插法2.查看主板类型 1)查看主板信息 dmidecode -t baseboard 2)查看主板型号 dmidecode -t baseboard |grep Product Name:| awk -F: {print $2}3.某些对应关系 一定要找准:…

【YashanDB知识库】kettle同步PG至崖山提示no encryption pg_hba.conf记录

【问题分类】数据导入导出 【关键字】数据同步,kettle,数据迁移,pg_hba.conf 【问题描述】使用kettle同步postgresql至崖山数据库时提示以下报错信息:【问题原因分析】pg_hba.conf 文件中没有正确配置允许从 IP 地址 连接到数据库的规则。pg_hba.conf 文件是 PostgreSQL 中…

如何理解符号引用和直接引用?

我们知道在 JVM 中类加载总共使用 5 步组成的,而类的生命周期总共有 7 个阶段,如下图所示:其中每步的含义如下: 1.加载 加载(Loading)阶段是整个“类加载”(Class Loading)过程中的一个阶段,它和类加载 Class Loading 是不同的,一个是加载 Loading 另一个是类加载 Cl…

城市体检平台创新与应用

城市体检平台是新时代城市治理的创新工具,它通过集成多源数据、运用先进技术,对城市发展状况进行全面的监测、分析和评估。本文将探讨城市体检平台的创新与应用,以及如何通过这一平台推动城市治理的高质量发展。 一、城市体检平台的创新点多维度评估:城市体检平台不仅关注城…