Tag: 内存

找不到内存泄漏

我一直在研究WP7应用程序,它是图像库应用程序,实现了基本的缩放和轻弹手势。 出于测试目的,我使用设置为Content的离线图像(其文件名已编号)编译应用程序,并通过硬编码字符串(稍后将替换)访问它们。 但后来意识到应用消耗了大量内存。 我以为这是由于图像并发现了这个博客 ; 图像总是缓存。 我使用博客中的代码来纠正这个问题。 尽管消费率确实下降,但仍未释放内存。 为了最后的尝试,我创建了另一个带有基本function2按钮的测试应用程序,用于图像的导航和图像控制,只是为了确保它不是我的手势代码可能是问题。 这是xaml 这是.cs文件 const int PAGE_COUNT = 42; int pageNum = 0; public MainPage() { InitializeComponent(); RefreshImage(); } private void btnPrev_Click(object sender, RoutedEventArgs e) { pageNum = (PAGE_COUNT + pageNum – 1) % PAGE_COUNT; // cycle to prev image RefreshImage(); } private void btnNext_Click(object sender, RoutedEventArgs e) […]

在32位.NET进程中分配超过1,000 MB的内存

我想知道为什么我无法在32位.NET进程中分配超过1,000 MB的内存。 以下迷你应用程序在分配1,000 MB后抛出OutOfMemoryException。 为什么1,000 MB,而不是说1.8 GB? 我可以改变流程范围的设置吗? static void Main(string[] args) { ArrayList list = new ArrayList(); int i = 0; while (true) { list.Add(new byte[1024 * 1024 * 10]); // 10 MB i += 10; Console.WriteLine(i); } } PS:垃圾收集没有帮助。 编辑,澄清我想要的:我编写了一个服务器应用程序,在写入数据库/磁盘之前处理大量数据。 我没有为所有内容创建临时文件,而是编写了一个内存缓存,这使得整个过程非常快。 但记忆是有限的,所以我试图找出限制是什么。 并且想知道为什么我的小测试程序在1,000 MB之后抛出了OutOfMemoryException。

C#中的内存使用情况

我有一个在C#中使用线程的程序。 有没有办法以编程方式了解应用程序的内存使用情况? 我想限制线程的产生说10兆字节的内存,我该怎么做?

当我读取500MB FileStream时OutOfMemoryException

我正在使用Filestream读取大文件(> 500 MB),我得到了OutOfMemoryException。 任何解决方案。 我的代码是: using (var fs3 = new FileStream(filePath2, FileMode.Open, FileAccess.Read)) { byte[] b2 = ReadFully(fs3, 1024); } public static byte[] ReadFully(Stream stream, int initialLength) { // If we’ve been passed an unhelpful initial length, just // use 32K. if (initialLength 0) { read += chunk; // If we’ve reached the end of […]

即使在需要时也不会发生垃圾收集

我制作了一个64位WPF测试应用程序。 随着我的应用程序运行并打开任务管理器,我会查看系统内存使用情况。 我看到我使用2GB,我有6GB可用。 在我的应用程序中,我单击“添加”按钮将新的1GB字节数组添加到列表中。 我看到我的系统内存使用量增加了1GB。 我点击添加总共6次,填充我开始时可用的6GB内存。 我单击“删除”按钮6次以从列表中删除每个数组。 删除的字节数组不应该由我的控件中的任何其他对象引用。 当我删除时,我没有看到我的记忆下降。 但这对我来说没关系,因为我知道GC是非确定性的,所有这一切。 我认为GC会根据需要收集。 所以现在内存看起来很满,但期望GC在需要时收集,我再次添加。 我的电脑开始滑入和滑出磁盘晃动昏迷。 为什么GC不收集? 如果那不是时候做,那么什么时候? 作为一个完整性检查,我有一个强制GC的按钮。 当我推动它时,我很快就恢复了6GB。 这不能certificate我的6个arrays没有被引用,如果GC知道/想要收集COULD吗? 我已经阅读了很多说我不应该调用GC.Collect()但是如果GC在这种情况下不收集,我还能做什么? private ObservableCollection memoryChunks = new ObservableCollection(); public ObservableCollection MemoryChunks { get { return this.memoryChunks; } } private void AddButton_Click(object sender, RoutedEventArgs e) { // Create a 1 gig chunk of memory and add it to the […]

如何计算私人工作集(内存)?

如何使用C#计算内存的私有工作集? 我感兴趣的是产生与taskmgr.exe大致相同的数字。 我正在使用Process命名空间并使用像WorkingSet64和PrivateMemorySize64这样的方法/数据,但这些数字有时会减少100MB或更多。

填充MemoryStream时OutOfMemoryException:在16GB系统上分配256MB

我在我的开发IIS服务器(来自VS2010 IDE)上运行以下方法,在64位Windows 7计算机上安装了16 GB RAM: public static MemoryStream copyStreamIntoMemoryStream(Stream stream) { long uiLen = stream.Length; byte[] buff = new byte[0x8000]; int nSz; MemoryStream ms = new MemoryStream(); try { while ((nSz = stream.Read(buff, 0, buff.Length)) != 0) { ms.Write(buff, 0, nSz); } } finally { Debug.WriteLine(“Alloc size=” + ms.Length); } return ms; } 我在这一行得到System.OutOfMemoryException : […]