- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在编写的应用程序因内存泄漏而受到严重影响。当用户关闭加载的项目时,几乎整个对象模型都保留在内存中。我知道这是因为在我的应用程序中关闭一个项目几乎不会影响任务管理器中的内存使用,然后打开一个新项目几乎每次都会使它翻倍。我下载了 jetBrain 的 dotTrace Memory 3.5,但几乎没有(没有)使用说明。我有点想出了如何使用它,它表明当我在项目关闭后拍摄快照时,整个对象模型仍在内存中。浏览我的 projectClose 代码,我看不出有什么理由这样做。有没有人知道通常会导致 C# 内存泄漏的任何事情,或者是否知道任何用于跟踪问题的工具或技术。有一个应用程序显示我的整个对象模型仍然加载到内存中,但它没有显示存储它的对象或变量,这一切都很好。提前致谢。
最佳答案
首先,调查泄漏是否可能是由于事件处理程序的注册造成的,因为这是不小心将对象设为 root 的最简单方法之一。例如,如果您有一个类“Bob”,它添加了一个方法“OnSomeEvent”作为一个事件的委托(delegate),该事件由系统的长期存在的组件(例如“UserSettingsManager”)引发,那么类“Bob”的对象' 不会被收集,因为它们作为事件处理程序而保持事件状态(即事件回调不是弱引用)。
作为商业工具的替代品,有一个名为 SoS(Son of Strike)的 Windows 调试器扩展,您可以使用它来调试托管应用程序。然而,它并不是胆小鬼,因为它是一个低级的命令行工具,需要大量的前期学习。然而,它非常强大,并且不会像商业工具那样与更大的进程(在堆消耗方面)纠缠不清。
就商业分析器而言,我对 Redgate 的 ANTS Memory Profiler 有很好的体验(但我有一些讨厌它的同事)所以它可能值得一试。
关于C#内存泄露、追踪技巧和工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3750385/
大家晚上好! 在当前的项目中,我遇到了相当令人担忧的内存泄漏,但我似乎无法修复它。 我让应用程序在标准使用情况下运行过夜,当我在 8 小时后醒来时,它消耗了约 750MB 内存,而它一开始的内存约为
class MyViewController: UIViewController { @IBOutlet weak var webView: UIWebView? override
我的 sql 处理程序有问题 A SQLiteConnection object for database '/data/data/.../databases/queueManager' was le
我在引用 block 本身内的“NSBlockOperation”时遇到麻烦。我需要检查操作是否被取消,并且似乎在启用 ARC 的项目中运行时,对“searchOperation”的任何访问都会泄漏。
public class ProgressCircleActivity extends AppCompatActivity { private ProgressDialog progressB
Activity 泄漏是我可以为当前问题想到的最具体的术语。如果有其他情况,请指正。 场景:我创建了一个简单的 Android 测试应用程序来解决我的问题。我有一个 Activity ,一个添加到 f
我正在尝试创建身份验证系统,如果设备关闭 (SCREEN_OFF) 超过 INTERVAL,该系统会弹出登录窗口。 我已经注册了一个 BroadcastReceiver 来监听可启动 Activity
我想知道如果生产 key 被泄露需要采取哪些步骤。幸运的是,情况并非如此,但还是很高兴知道。 特别是,如果简单地将旧 key 交换为新生成的 key ,会发生什么情况?由于它用于生成哈希,是否会破坏整
我正在使用 Leak Canary 来跟踪内存泄漏,它说以下内容被泄漏: static hk.o references ht.a leaks MainActivity instance hk.o 和
-(NSDate *)dateFromDate:(NSDate *)inDate withNewTime:(NSDateComponents *)inTimeComponents { NSCalend
当我使用 AudioToolBox 播放音乐时,内存泄漏严重。 AVAudioPlayer *newMusicPlayer = [[AVAudioPlayer alloc] initWithData:
我使用 OpenAL 在我的应用程序中播放声音。当我使用 Instruments 工具测试它时,它发现了泄漏: LeakedObject = GeneralBlock-512 大小 = 512 字节
我需要捕获桌面图像并处理其 RGB 数据,我正在使用 Quartz API 来执行相同的操作, 我面临的问题是内存使用率高, 请引用函数, 在这里编辑,该函数是通过 pThread 调用的;像这样的东
我的 Android 应用程序中有一个 MapActivity,它使用 osmdroid(Open Street Map for Android 库)显示 map 。 当我在此 MapActivity
我在 fragment 中使用 AdMob。有时我会看到以下堆栈 10-23 14:27:38.916: E/ActivityThread(21250): Activity com.applegrew
我正在使用以下方式访问我的 API key ;这似乎是 recommended way ;但是当我将我的应用程序上传到 Play 管理中心时,运行预发布报告时出现严重错误。它说“泄漏的 GCP API
一家 3rd 方安全咨询公司在我们的 Angular SPA/ASP.NET WebAPI 应用程序中发现了 区域下的风险。信息公开 ,我们被告知要解决。 风险是由于 Angular 应用程序的性质,
在 Android 中,当读取 MIFARE Classic 卡时,使用 MifareClassic.authenticateSectorWithKeyA(或 authenticateSectorWi
加载谷歌地图时在分析器中获取泄漏。我根据谷歌的示例代码创建了一个非常简单的 View Controller ,我发现我在加载 map 时遇到了泄漏。我相信泄漏是在 SDK 本身。有没有人遇到过这个问题
我是一名优秀的程序员,十分优秀!