memory相关内容
这是一个内存可以在.NET中实现管理code的最高金额?它依赖于实际结构(32/64比特)? 解决方案 有没有硬盘,为.NET code确切的数字。 如果您运行在32位的Windows;您的处理的可寻址高达2 GB,如果3 GB / 3GB开关用于Windows Server 2003上。 如果您在64位机器上运行64位进程您的过程的最多可寻址的地址空间8 TB,如果那么多内存是prese
..
假设我已经解雇了32位的Windows Server和/ 3GB开关,我怎样才能使.NET应用程序使用额外的地址空间? 解决方案 该标志是图像报头的一部分,所以你需要修改,使用EDITBIN。 EDITBIN / LARGEADDRESSAWARE<您的exe> 使用 DUMPBIN /头,并查找的应用程序的presence可以处理大(大于2GB)地址来查看是否设置
..
我有一个消息记录到使用文本框在屏幕的应用程序。更新函数使用一些Win32函数,以确保盒自动滚动到结束,除非用户正观看另一行。这里是更新的功能: 私人布尔logToScreen = TRUE; //常量的extern调用各种功能的滚动条 私人const int的SB_HORZ =为0x0; 私人const int的SB_VERT =为0x1; 私人const int的WM_HSCROLL =量0
..
如何测量编程在.NET当前进程的总内存消耗? 解决方案 请参阅本另外试试这个 过程currentProcess = System.Diagnostics.Process.GetCurrentProcess(); 长totalBytesOfMemoryUsed = currentProcess.WorkingSet64;
..
如果我理解正确的话后,我的.NET运行时会经常清理。所以,如果我创建新的对象,我停在我code引用它们,运行时会清理这些对象并释放它们占用的内存。 既然是这样的话那么为什么某些对象需要有一个析构函数或处理方法?不会运行后,他们清理时,他们不再被引用的? 解决方案 需要终结,以保证稀缺资源的释放回系统,例如文件句柄,插座,内核对象等。由于终结始终运行在年底对象的生活,它的指定地点释放这些句
..
有没有一种方法来告诉Windows,它不应该换出一个特定的进程“内存到磁盘? 它的一个.net窗口服务,相当大的内存使用情况。我得到了很多的物理内存但操作系统似乎推动这一进程的内存页面文件的一部分呢。 解决方案 您可以使用的 VirtualLock 以prevent内存被分页到磁盘,但我真的觉得你最好让OS管理系统的内存。这是pretty的擅长,我不会第二次猜测为什么操作系统被交换的东西到磁
..
我做了一个64位的WPF测试应用程序。随着我的应用程序运行和使用任务管理器中打开,我看我的系统的内存使用情况。我看到我使用的是2GB,我有6GB可用。 在我的应用程序,我单击Add按钮,一个新的1GB的字节数组添加到列表中。我看到我用1GB的系统内存使用量增加。我点击添加一共有6次,尽显内存6GB我不得不用的时候我开始了。 我点击删除按钮6次,从列表中删除每个阵列。拆除的字节数组不应该由任何其
..
我了解到,类字段存储在堆中,哪来的方法存储在哪里?在堆或其他地方?他们是内联? 解决方案 方法都存在别处在内存中。请注意,方法是每一个类,而不是每个实例。因此通常,方法的数目超过一个程序的运行时不改变(也有例外)。在传统的模式,这里的方法居住的地方被称为“code段”。在.NET中,这是比较难:该方法最初住在组装,并获得映射到进程的内存。在那里,刚刚即时编译器创建的本地code一些方法的第二个
..
我已经创建一个C#应用程序,它利用了内存(专用字节)150MB,主要是由于大辞典: 词典<字符串,INT> Txns =新字典<字符串,INT>(); 我不知道如何释放此内存了。我试过这样的: Txns = NULL; 所以GC.Collect(); 但它似乎并没有留下太深的印象,在我的专用字节 - 他们放弃说,从155MB到145MB。 任何线索?
..
我不知道如何分配给位图的分配和处置的内存在使用.NET。 当我做了很多位图创作中的循环功能,并呼吁它在继承它的工作,直到在某个点位图将无法分配内存给除“无效参数”为指定的大小。 如果我所说的垃圾回收器,而到时它的工作原理。 通过以下code,你能repoduce错误: 类BitmapObject { 公共BOOL可见{ {返回基站; } 集合{E
..
我有一个使用线程在C#程序。有没有办法知道编程的应用程序的内存使用情况如何?我想限制线程的产卵地说10兆的内存,我将如何做到这一点? 解决方案 如果你想,而不是在每个线程的基础上,整个运行过程中的记忆,怎么样: //获得当前进程 过程currentProcess = System.Diagnostics.Process.GetCurrentProcess(); //获取物理内存使用 长t
..
我很奇怪,为什么我不能够分配更多的1000 MB的内存在我的32位.NET过程。下面的小应用程序已经分配1000 MB后抛出一个OutOfMemoryException。为什么1000 MB,而不是说1.8 GB?是否有一个进程范围的设置,我可以改变吗? 静态无效的主要(字串[] args) { ArrayList的名单=新的ArrayList(); INT I = 0;
..
我认为,GC将调用Dispose最终,如果你的程序没有,但是,你应该在你的程序调用Dispose()只是为了清理确定性。 不过,从我的小测试程序,我没有看到Dispose已获取调用所有.... 公共类测试:IDisposable的 { 静态无效的主要(字串[] args) { 测试S =新的测试(); S = NULL; 所以GC
..
时有可能得到的系统可用内存在C#.NET中的大小?如果是的话怎么办? 解决方案 使用右键单击您的项目,添加引用,选择 Microsoft.VisualBasic程序。
..
立即回了.NET垃圾回收器最终会释放内存,但是如果你想要的记忆?什么code你需要在一个类来使用 MyClass的调用 myclass.dispose 和释放所有在变量和对象的 MyClass的使用空间? 解决方案 IDisposable接口无关,与释放内存。 IDisposable的是释放的非托管的资源的模式 - 和记忆是非常肯定受管资源 指向GC.Collect的(该链接
..
我找不到这个问题的任何有用的答案,尽管它已被要求以不同的方式多次。 欲两个进程(两个不同的应用程序)之间共享的存储器, 使它们中的一个可写入该存储器,而另一个可以读 在.NET这可能吗?怎么样? 感谢 解决方案 目前,.NET不支持部分(也就是内存映射文件)。它将很快,4.0版本有System.IO.MemoryMappedFiles命名空间。有一个很好的理由花了这么长时间,你也不会快乐
..
我想办下来的Windows窗体应用程序的内存泄漏。我现在看它包含多个嵌入式表格的方式。我担心的是,孩子的形式,在其构造,需要引用父窗体,并保持在一个私有成员域。因此,在我看来,来的垃圾收集时间: 父的引用,子窗体,通过控件集合(子窗体嵌入那里)。子窗体未GC'd。 子窗体的引用,父窗体,通过私有成员字段。父窗体不GC'd。 这是的垃圾收集器将如何评估情况的准确理解?任何的方式来“证明”其用于
..
这是广为人知的,老问题与.NET WebBrowser控件。 摘要:具有.NET WebBrowser控件导航到一个页面增加了永远不会被释放的内存使用。 重现内存泄漏:添加一个WebBrowser控件到窗体。用它来导航到任何网页你想。约:空白作品,向下滚动在谷歌图像,直到您的使用情况为100MB +,然后浏览到其他地方几乎没有发现任何被释放的内存是一个更生动的实例 我给一个应用程序当前要求包
..
目前,我们正在想建立一个缓存系统来保存数据掏出一个SQL数据库,并使其一对夫妇的其他应用程序(网站,Web服务等)可供选择。我们想象中的高速缓存,运行作为Windows服务和基本构成一个聪明的字典持有缓存条目。我的问题是,是有限制的应用程序的工作集(这将Windows Server 2003下运行)?或者是物理内存量的限制吗? 解决方案 32位或64位? 32位为2GB(一个过程),64位是
..
我开发目前有数百创建的对象的应用程序。 是否有可能以确定(或相近)由对象(类实例)分配的内存? 解决方案 您可以使用像一个内存分析器 .NET内存分析器( http://memprofiler.com/ ) 或 CLR分析器(免费)( HTTP://clrprofiler.$c$cplex.com/ )
..