记一次 .NET某游戏币自助机 内存暴涨分析

💡 原文中文,约9200字,阅读约需22分钟。
📝

内容提要

本文介绍了作者朋友遇到的程序内存暴涨问题和使用WinDbg分析内存泄漏的方法。通过分析内存占用情况,发现线程栈占用了大部分内存,并提供了修改栈空间大小的方法。讨论了大量线程存在的原因,并给出了解决建议。总结了Linux上的.NET调试生态越来越丰富,并赞扬了WinDbg的功能。

🎯

关键要点

  • 朋友的程序出现内存暴涨问题,分析发现是非托管内存问题。

  • 使用WinDbg分析Linux上的dump,发现线程栈占用了大部分内存。

  • 通过maddress命令可以跨平台查看内存使用情况。

  • 当前程序总计3.65G内存占用,线程栈占用8M内存空间。

  • 可以通过修改ulimit -s参数和DOTNET_DefaultStackSize环境变量来调整栈空间大小。

  • 需要分析大量线程的原因,发现与Kafka相关的库存在大量线程等待。

  • 建议修改DOTNET_DefaultStackSize参数,观察Kafka的相关逻辑。

  • Linux上的.NET调试生态日渐丰富,WinDbg功能强大,支持全平台分析。

➡️

继续阅读