深入C# 内存管理以及优化的方法详解
程序员文章站
2023-12-20 18:58:52
在c# winform应用程序中,用以下代码可以进行一些内存使用的优化复制代码 代码如下:using system;using system.diagnostics;usi...
在c# winform应用程序中,用以下代码可以进行一些内存使用的优化
using system;
using system.diagnostics;
using system.runtime.interopservices;
/// <summary>
/// 包含各种内存管理、优化的方法
/// </summary>
public class memory
{
private static readonly version myversion = new version(1, 0);
/// <summary>
/// 将当前进程的内存占用尺寸设置到最小
/// </summary>
/// <returns>0为成功,-1为失败</returns>
public static int setprocessmemorytomin()
{
return setprocessmemorytomin(process.getcurrentprocess().handle);
}
/// <summary>
/// 将内存占用尺寸设置到最小
/// </summary>
/// <param name="setprocess">需要设置内存使用范围的程序进程句柄,一般为当前进程, 如:system.diagnostics.process.getcurrentprocess().handle</param>
/// <returns>0为成功,-1为失败</returns>
public static int setprocessmemorytomin(intptr setprocess)
{
if (environment.osversion.platform == platformid.win32nt)
{
return setprocessworkingsetsize(setprocess, -1, -1);
}
return -1;
}
[dllimport("kernel32.dll")]
private static extern int setprocessworkingsetsize(intptr hprocess, int dwminimumworkingsetsize, int dwmaximumworkingsetsize);
}
复制代码 代码如下:
using system;
using system.diagnostics;
using system.runtime.interopservices;
/// <summary>
/// 包含各种内存管理、优化的方法
/// </summary>
public class memory
{
private static readonly version myversion = new version(1, 0);
/// <summary>
/// 将当前进程的内存占用尺寸设置到最小
/// </summary>
/// <returns>0为成功,-1为失败</returns>
public static int setprocessmemorytomin()
{
return setprocessmemorytomin(process.getcurrentprocess().handle);
}
/// <summary>
/// 将内存占用尺寸设置到最小
/// </summary>
/// <param name="setprocess">需要设置内存使用范围的程序进程句柄,一般为当前进程, 如:system.diagnostics.process.getcurrentprocess().handle</param>
/// <returns>0为成功,-1为失败</returns>
public static int setprocessmemorytomin(intptr setprocess)
{
if (environment.osversion.platform == platformid.win32nt)
{
return setprocessworkingsetsize(setprocess, -1, -1);
}
return -1;
}
[dllimport("kernel32.dll")]
private static extern int setprocessworkingsetsize(intptr hprocess, int dwminimumworkingsetsize, int dwmaximumworkingsetsize);
}