草庐IT

内存取证

全部标签

c# - ListCollectionView 是否泄漏内存?

我一直在研究如何避免因View模型中对INotifyCollectionChanged事件的强引用而导致的内存泄漏。我正在尝试使用ListCollectionView看看它是否适合我。我认为以下是内存泄漏,我做错了吗?varstuff=newObservableCollection();while(true){varresult=newListCollectionView(stuff);//JusttokeepmakesurethatthememoryI'mseeing//isn'twaitingtobeGC'dGC.Collect();} 最佳答案

c# - StringBuilder 是否比 String 连接使用更多的内存?

我知道在C#中使用StringBuilder有明显的性能优势,但内存差异是什么?StringBuilder是否使用更多内存?附带说明一下,stringbuilder本质上有哪些不同之处使其速度如此之快? 最佳答案 简短回答:StringBuilder适用于连接任意数量的字符串的情况,而这些字符串在编译时是未知的。如果您确实知道在编译时要组合哪些字符串,StringBuilder基本上毫无意义,因为您不需要它的动态调整大小功能。示例1:您想组合“猫”、“狗”和“老鼠”。这正好是11个字符。您可以简单地分配一个长度为11的char[]数

c# - 从内存中的 .CAB 存档或 InfoPath XSN 文件中提取的最少 C# 代码

最近我一直在尝试实现一些从InfoPathXSN文件(.CAB存档)中提取文件的功能。在互联网上广泛搜索后,似乎没有用于此的native.NETAPI。当前所有解决方案都以大型库为中心,即包含Cabinet.dll的托管C++。遗憾的是,所有这些都违反了我公司的“无第三方库”政策。从2.0开始,.NET获得了一个名为UnmanagedFunctionPointer的属性,它允许使用__cdecl进行源级回调声明。在此之前,__stdcall是镇上唯一的节目,除非你不介意捏造IL,这种做法在这里也是非法的。我立即知道这将允许为Cabinet.dll实现一个相当小的C#包装器,但我在任何地

c# - 我可以获得内存映射文件的路径吗? (.NET 4.0)

我希望非.NET应用程序访问内存映射文件,但此应用程序不知道内存映射文件的存在,因此我需要文件路径。有可能的? 最佳答案 他们有一些samplehere.编辑我认为this会提供答案。基本上,内存映射文件似乎需要某种内存指针,而不是文件系统路径。 关于c#-我可以获得内存映射文件的路径吗?(.NET4.0),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1114786/

c# - 如何在不先将整个列表加载到内存的情况下使用 Linq to Sql 实现 SkipWhile?

我需要按发布日期降序排列存储在数据库中的文章,然后使用Id==100获取文章之后的前20条记录。这就是我想用Linq做的事情:IQueryablearticles=db.Articles.OrderByDescending(a=>a.PublicationDate).SkipWhile(a=>a.Id!=100).Take(20);但是,这会生成NotSupportedException,因为LinqtoSql不支持SkipWhile(请参阅here)。一个可能的解决方案是执行查询,然后使用LinqtoObject应用SkipWhile:IEnumerablearticles=db.A

c# - 极端内存条件测试 : How to saturate RAM?

我想写一小段程序来启动线程,以线性方式消耗可用的RAM内存,直到达到一定水平,然后停止(理想情况下,暂停直到“足够”的内存被释放,然后继续创建线程,依此类推。)我尝试了以下操作,但是list.Add(newbyte[])需要连续的RAM空间并抛出一个OutOfMemoryException,这不是我想要的模拟。编辑:我有一个多线程的内存消耗型应用程序,它占用了一大堆RAMGB。我想要的只是在“实验室条件”中隔离/重现这种情况以解决它,即编写自适应内存监控/线程限制器草案。我正在使用x64操作系统和x64平台。说清楚:我想看到的结果是任务管理器内存监视器由于程序而直线上升。staticv

c# - get_SynonymInfo 某些词抛出内存不足异常

我有一个简单的测试程序,它使用MicrosoftWordInterop从同义词词典中获取词义:usingSystem;usingWord=Microsoft.Office.Interop.Word;classProgram{staticvoidMain(string[]args){stringword="elite";//="common";varapp=newWord.Application();varsynInfo=app.SynonymInfo[word,Word.WdLanguageID.wdEnglishUS];if(synInfo.Found&&synInfo.Meanin

c# - 如何并行处理内存映射文件中的数据

正如内存映射文件的名称所示,我知道可以使用C#中的MemoryMappedFile类将大文件的一部分映射到内存,以实现快速数据处理。我想对内存映射文件做的是并行处理内存映射。为了做到这一点,我有以下问题MemoryMappedFileViewAccessor是线程安全的还是Parallel.For安全的?我实际上制作了一个演示程序来测试这个问题,它似乎在工作。但是找不到关于此的任何引用。如果答案是肯定的,我就完成了。否则,有什么方法可以直接访问数组映射的内存吗?我知道MemoryMappedFileViewAccessor有ReadArray方法,但使用该方法是内存的重复。

c# - C#中const的内存分配

我使用时内存是如何分配的:publicclassMyClass{publicconststringmyEVENT="Event";//Othercode} 最佳答案 好吧,它是一个编译时常量-所以如果您从其他程序集中使用它,“事件”将被复制到那些其他程序集的IL中。是否进行内部交叉汇编取决于CLR设置IIRC。但是,如果您担心是否会为MyClass的每个实例获取一个新字符串或一个新字符串变量,则不需要担心-const意味着static。简而言之,除非您有大量大量常量(或大量字符串常量),否则不会给您带来问题。

c# - 开发和调试内存占用 C# 应用程序

我有一个C#应用程序,它必须与32位库链接并且还需要使用尽可能多的内存(成像应用程序);我们在XP64桌面上运行该应用程序,因此我们使用WOW64,目标是在VisualStudioforx86中构建(并执行editbin/largeaddressaware构建后)。我们遇到了一些问题:在VisualStudio内置调试​​器中,我们只能使用2gb内存(应用约1.5gb,加上开销)从命令行运行,应用程序可以看到3gb内存,但Microsoft文档似乎说我们应该看到4gb。谁能告诉我如何让WOW64C#应用程序看到平台应该能够提供的完整4gb?此外,谁能告诉我如何让VisualStudio