memory-management相关内容
如何检测在C#应用程序的内存泄漏?什么工具需要使用?哪些最佳做法你知道吗? 解决方案 检测内存泄漏并不是一件容易的事情,而且也没有明确的回答这个问题。您可以使用分析器工具,如蚂蚁内存分析器或的
..
MSDN: 公众的IntPtr MaxWorkingSet {获得;组; } 获取或设置允许的最大 工作集大小相关 处理。属性值:最大 允许在工作集大小 存储器的过程中,以字节为 所以,据我了解,我可以限制内存,可使用的处理量。我想这一点,但没有运气。 有些code: 大众A级 { 公共无效DO() { 名单<字符串>的GUID =新的名单
..
我试图让与.NET数据表相关的内存开销量的处理,并与表内的个人数据行。 换句话说,如何更确实存储器的数据表占据比将需要简单地存储数据的每一列的适当类型数组? 我想会有一些基本表的开销,再加上每列一定量,然后再每行的额外金额。 因此,谁能给出一个估计值(和,我想,解释!)每个/任何这三种开销的? 解决方案 好了,不要忘了一个数据表商店2? 3?数据版本 - 原和更新(可能的另一个?)。
..
如何测量编程在.NET当前进程的总内存消耗? 解决方案 请参阅本另外试试这个 过程currentProcess = System.Diagnostics.Process.GetCurrentProcess(); 长totalBytesOfMemoryUsed = currentProcess.WorkingSet64;
..
如果我理解正确的话后,我的.NET运行时会经常清理。所以,如果我创建新的对象,我停在我code引用它们,运行时会清理这些对象并释放它们占用的内存。 既然是这样的话那么为什么某些对象需要有一个析构函数或处理方法?不会运行后,他们清理时,他们不再被引用的? 解决方案 需要终结,以保证稀缺资源的释放回系统,例如文件句柄,插座,内核对象等。由于终结始终运行在年底对象的生活,它的指定地点释放这些句
..
我设法要获得一个.NET对象的地址 的GCHandle objHandle = GCHandle.Alloc(OBJ,GCHandleType.WeakTrackResurrection); INT地址= GCHandle.ToIntPtr(objHandle).ToInt32(); 和我能回想起目标 obj对象= GCHandle.FromIntPtr(IntPtr的(地址))的目
..
在.net中的某些集合类型有一个可选的“初始容量”的构造函数的参数。例如: 词典<字符串,字符串>一些=新字典<字符串,字符串>(20); 名单<字符串>什么=新的名单,其中,串>(50); 我似乎无法找到默认的初始容量是什么MSDN上的这些对象。 如果我知道,我将只存储12左右的项目在字典中,没有有意义设置初始容量为类似20? 我的理
..
我怎样才能在C#中,然后为每个进程当前的内存和CPU的消耗?所有进程的列表 样品code是高度AP preciated。 感谢您! 解决方案 在 Process类有一个GetProcesses方法,可以让你列举正在运行的进程,并列出了一堆统计像内存使用情况和CPU时间。看看下面的统计特性的文档。 内存使用是一个复杂的问题。实在是没有单号,描述了使用。请参阅Russinovich的优秀系列
..
在我的笔记本电脑,运行64位的Windows 7和2 GB的可用内存(所报告的任务管理器),我能够做的: 变种X =新字典<的Guid,小数>(30 * 1024 * 1024); 而无需电脑,在我的手更多的RAM,我想知道这是否会扩展,这样一台电脑与4 GB的可用内存,我就能够分配,而不是“刚”30M等等60M项目对? 还是有其他的限制(.NET和/或Windows),
..
我自动化一些分析任务,并要记录的堆空间,并生成大小实时性。该分析API 看起来太过复杂,我需要的东西,它似乎对个人的分配监听和收藏,这是不是对我来说很重要。性能分析工具当然是一个很大的帮助,但我一直在寻找一个更灵活,可编程接口。 解决方案 术语“当前内存使用'是有点松散定义。你的意思是工作集?不管这意味着,你可以使用不同的属性,如 VirtualMemorySize ,工作集, Private
..
什么是最大的内存垃圾收集器分配给一个.NET过程?当我编译到x64,Process.GetCurrentProcess.MaxWorkingSet返回有关1,4GB,但是当我编译成值为anycpu(64)相同数量被返回。对于x64它应该更像是显示在任务管理器中的“限制”的价值。我怎样才能得到正确的数量在所有情况下超过时,会导致内存溢出,异常? 一些例子是什么方法应该返回: 1)机器配置:x64
..
我希望有人能赐教,以什么可能会导致此错误: 试图读取或写入受保护的内存。这通常表明其他内存已损坏。 我真的不能张贴code,因为这个错误似乎在任何随机领域中的应用的抛出。该应用程序将从12-48小时引发错误前,在任何地方运行。有时它会停在一个看似偶然的当场抛出上述错误,其他时候整个应用程序停止,我也得到一个屏幕,一个错误,指出沿“的存在是...这可能是一个致命的错误的东西线臭虫在CLR或者
..
好了,这是我第一次涉足内存配置的是.NET应用程序(CPU调我做了),我打了一下墙上的在这里。 我在我的应用程序的视图加载每页40幅影像(最大),每个运行一下〜3MB。页面的最大数量为10看到,因为我不希望保留400的图像或1.2GB内存一次,我设定每个图像为空时,该页面被更改。 现在,起初我还以为我必须只是陈旧引用这些图像。我下载蚂蚁分析器(伟大的工具BTW),并跑了几个测试。对象生命周期曲
..
本来我想知道是否了ToList 分配更多的内存比使用名单,其中的构造; T> 这需要一个的IEnumerable< T> (无差异)。 有关测试的目的,我用 Enumerable.Range 来创建一个源阵列,我可以用它来创建名单,其中的一个实例; INT> 通过1。了ToList 和2的构造。两者都创建副本。 这是我如何来发现的内存消耗有很大的区别: Enumera
..
有一个先进的一篇文章,我可以读,可以解释内存是如何分配给不同类型的(价值和参考)在.NET框架。 例如,我们知道,值类型在堆栈上分配空间,但究竟是被管理的? 另外如何在一堆托管引用类型和存储在哪里的实际值。 (引用类型就像任何类将包含许多值类型,他们在哪里保存它们是如何被管理的) 解决方案 这比你想象的要复杂得多。即使你声称“值类型分配在堆栈上”是不正确的。例如: 类Foo {
..
在C#中,有没有办法 获取存储在内存地址 引用类型变量? 获取的内存地址 变量? 编辑: INT I; INT * PI =安培;我; 如何打印出圆周率?的十六进制值 解决方案 有关#2,&安培; 运营商将会以相同的方式工作,成为C.如果变量不是在堆栈上,您可能需要使用固定语句针下来,而你工作这么垃圾回收器不动它,虽然。 有关#1,引用类型是棘手:您需要使用的GCHan
..
有没有在使用C#对象初始化什么好处? 在C ++中没有引用,一切都被封装的对象,因此它是有道理的使用对象创建后初始化成员的他们,而不是内部。 什么是他们在C#中使用的情况下? 如何:通过使用对象初始化(C#编程指南)初始化对象 解决方案 一个经常错过好处是原子。如果您使用的是 StudentName学生=新StudentName { 名字=“克雷格” 姓氏=“Playstead” ID
..
我们有code这样的: MS =新IO.MemoryStream 斌=新System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin.Serialize(MS,largeGraphOfObjects) dataToSaveToDatabase = ms.ToArray() //把dataToSaveToDatabase在S
..
我想办下来的Windows窗体应用程序的内存泄漏。我现在看它包含多个嵌入式表格的方式。我担心的是,孩子的形式,在其构造,需要引用父窗体,并保持在一个私有成员域。因此,在我看来,来的垃圾收集时间: 父的引用,子窗体,通过控件集合(子窗体嵌入那里)。子窗体未GC'd。 子窗体的引用,父窗体,通过私有成员字段。父窗体不GC'd。 这是的垃圾收集器将如何评估情况的准确理解?任何的方式来“证明”其用于
..
在下面的程序 类主要{ 静态字符串staticVariable =“静态变量”; 字符串instanceVariable =“实例变量”; 公众的Main(){} } 在 instanceVariable 将存储分配给对象实例的内存中。其中将 staticVariable 存储,是存储在对象实例本身还是有些还有什么地方?如果它存储了一些别的地方,如何存储位置连接
..