解决 .NET 程序在 Linux 下使用非托管资源占用内存过大问题

Linux 下 .NET 程序中直接或间接使用非托管内存资源后 (例如引用了 SkiaSharp OpenCVSharp 这样的库)
即使手动释放了对象 内存占用始终不降低

TLDR

设置环境变量 MALLOC_TRIM_THRESHOLD_ 在 1 - 1000000 之间即可 (推荐 40000 - 60000 之间)
越小的值内存占用降低效果越好 但是过小的值会导致程序性能受到影响

深入探究

太长了 有空在写(x)

参考资料

Memory leak on unix systems using dynamic code compilation

解决 .NET 程序在 Linux 下使用非托管资源占用内存过大问题

http://lolicon.akulak.icu/2022/11/13/解决 .NET 程序在 Linux 下使用非托管资源占用内存过大问题/

作者

AkulaKirov

发布于

2022-11-13

更新于

2022-11-14

许可协议

CC BY-NC-SA 4.0

评论