当前位置: 首页 > 编程笔记 >

C#的内存回收代码

融唯
2023-03-14
本文向大家介绍C#的内存回收代码,包括了C#的内存回收代码的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了C#的内存回收方法。分享给大家供大家参考。具体实现方法如下:

如下示例代码是调用win32底层操作,可实现内存的回收。      
 

[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]

public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);

/// <summary>

/// 释放内存

/// </summary>

public static void ClearMemory()

{

    GC.Collect();

    GC.WaitForPendingFinalizers();

    if (Environment.OSVersion.Platform == PlatformID.Win32NT)

    {

 SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);

    }

}

希望本文所述对大家的C#程序设计有所帮助。

 类似资料:
  • 本文向大家介绍asp.net中C#实现手动回收内存的方法,包括了asp.net中C#实现手动回收内存的方法的使用技巧和注意事项,需要的朋友参考一下 C#有自动回收内存的机制,但是有时自动回收有一定滞后,需要在变量使用后迅速回收,节约内存,这里介绍一个最简单的方法。 1.先对对象赋值 null; 2.使用System.GC.Collect() 不手动回收时,系统会等到程序执行结束时回收。在使用dat

  • 问题内容: 我正在读取一个很大的文件,并从每一行中提取文本的一小部分。但是,在操作结束时,我的工作记忆很少。似乎垃圾收集器在读取文件后无法释放内存。 我的问题是:有什么办法释放这种记忆?还是这是JVM错误? 我创建了一个SSCCE来演示这一点。它读取一个1 mb(由于16位编码,在Java中为2 mb)的文件,并从每行中提取一个字符(约4000行,因此大约为8 kb)。测试结束时,仍将使用全部2

  • 1.1 程序计数器 JVM 支持多线程同时执行,每个线程都有自己的程序计数器,线程正在执行 Java 代码,则存放正在执行的指令地址,如果正在执行 C 代码(本地方法),则为空。 1.2 虚拟机栈 线程私有,每个方法创建一个栈帧,用于存储局部变量表(this、参数列表、局部变量)、操作数栈(将下一个指令入栈,执行时出栈)、动态链接、方法出口等信息。方法从调用到执行完成对应栈帧的入栈到出栈,线程内串

  • 问题内容: 据我所知,从JDK 8开始,PermGen将成为Java历史的过去。一切都很好,很快乐……但是新的内存布局会是什么样?这会影响新平台上的GC吗? 问题答案: 在Oracle / Sun JDK8中,PermGen被Metaspace取代,这非常相似。主要区别在于Metaspace可以在运行时扩展。

  • 问题内容: 谁能 建议一本书 (或任何其他来源)来彻底揭示 JVM内存管理和垃圾回收的内部知识 (优化,工作,循环引用,特殊性,各种JVM隐喻的讨论…)? [到目前为止,我发现的是单独的文章,涉及各个方面,但没有重量级的书:)。这里是一些用于实施Hotspot的好材料。] 非常感谢您提供的任何建议。 问题答案: 如果您寻找与 供应商无关的 资源来揭示和彻底描述所有已研究/设计的各种GC算法,我建议

  • 本文向大家介绍图文详解java内存回收机制,包括了图文详解java内存回收机制的使用技巧和注意事项,需要的朋友参考一下 在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这两方面工作都是由JVM自动完成的,降低了Java程序员的学习难度,避免了像C/C++直接操作内存的危险。但是,也正因为内存管理完全由JVM负责,所以也使Java很多程序员不再关心内存分配,导致很