diff --git a/Bootstrap.Admin/HealthChecks/GCHealthCheck.cs b/Bootstrap.Admin/HealthChecks/GCHealthCheck.cs
new file mode 100644
index 00000000..334755f2
--- /dev/null
+++ b/Bootstrap.Admin/HealthChecks/GCHealthCheck.cs
@@ -0,0 +1,38 @@
+using Microsoft.Extensions.Diagnostics.HealthChecks;
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Bootstrap.Admin.HealthChecks
+{
+ ///
+ /// 内存状态检查其
+ ///
+ public class GCHealthCheck : IHealthCheck
+ {
+ ///
+ /// 构造函数
+ ///
+ ///
+ ///
+ ///
+ public Task CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
+ {
+ // Include GC information in the reported diagnostics.
+ var allocated = GC.GetTotalMemory(forceFullCollection: false);
+ var data = new Dictionary()
+ {
+ { "AllocatedMBytes", allocated / 1024 / 1024 },
+ { "Gen0Collections", GC.CollectionCount(0) },
+ { "Gen1Collections", GC.CollectionCount(1) },
+ { "Gen2Collections", GC.CollectionCount(2) },
+ };
+
+ var status = (allocated < 100000) ?
+ HealthStatus.Healthy : HealthStatus.Unhealthy;
+
+ return Task.FromResult(new HealthCheckResult(status, data: data));
+ }
+ }
+}
diff --git a/Bootstrap.Admin/HealthChecks/HealthChecksBuilderExtensions.cs b/Bootstrap.Admin/HealthChecks/HealthChecksBuilderExtensions.cs
index f01887f9..5c0d0728 100644
--- a/Bootstrap.Admin/HealthChecks/HealthChecksBuilderExtensions.cs
+++ b/Bootstrap.Admin/HealthChecks/HealthChecksBuilderExtensions.cs
@@ -16,6 +16,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
builder.AddCheck("db");
builder.AddCheck("file");
+ builder.AddCheck("gc");
return builder;
}
}