Java的Runtime.freeMemory()等方法的C#等效实现方式
Java Runtime 内存方法的 C# 等价实现
以下是 Java 中三个 Runtime 内存方法对应的 C# 实现:
Runtime.freeMemory()
Java 中该方法返回 JVM 已分配内存里未被使用的部分。在 C# 中可以通过进程内存和 GC 堆内存的差值近似计算:var process = System.Diagnostics.Process.GetCurrentProcess(); long freeMemory = process.PrivateMemorySize64 - GC.GetTotalMemory(false);说明:
GC.GetTotalMemory(false)返回当前 GC 堆中已分配但未回收的内存量,PrivateMemorySize64是进程从系统获取的私有内存总量,两者差值可对应 Java 的 freeMemory。Runtime.totalMemory()
Java 中该方法返回 JVM 当前已从系统获取的总内存。C# 中直接获取进程的私有内存总量即可:long totalMemory = System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64;Runtime.maxMemory()
Java 中该方法返回 JVM 允许分配的最大内存。C# 中有两种常见获取方式:// .NET Core 3.0+:获取 GC 可使用的最大内存(考虑系统限制和应用配置) long maxMemory = GC.GetGCMemoryInfo().TotalAvailableMemoryBytes; // 获取操作系统允许进程使用的最大工作集大小 var process = System.Diagnostics.Process.GetCurrentProcess(); long maxWorkingSet = process.MaxWorkingSet.ToInt64();
内容的提问来源于stack exchange,提问作者SeongSikChae
相关产品推荐
相关产品推荐

