- 主题:请教板上大佬,常见的memory leak通常发生在什么情况呢
这个总共有十几种情况
【 在 ustcBoy 的大作中提到: 】
--
FROM 183.15.177.*
非托管内存泄漏
1.io
2.端口瞬间开太多
event handler泄漏
1.lamda表达式泄漏,有一些特殊的lamda表达式会导致没有释放
2.event handler
gc有问题泄漏
1.大内存消耗,gc处理不过来
2.gc线程被阻塞,比如重载了finalize方法里写代码while(true);
其他的暂时想不起来了
【 在 ustcBoy 的大作中提到: 】
: 能简要说一些常见的吗,谢谢了
--
FROM 183.15.177.*
我很久很久没有写过c#了,只是记得有这么一档子事情,具体你可以参照一下这篇文章
https://stackoverflow.com/questions/46962507/why-does-a-lambda-expression-in-c-sharp-cause-a-memory-leak
哦,对,还有一种情况好像是发生在console程序中,如果没记错的话,console.writeLine这样的方法如果调用太频繁会阻塞线程,也会阻塞gc,忘记是不是这样了
【 在 ustcBoy 的大作中提到: 】
: 长见识了。
: lambda导致的泄露可以举个例子吗 ?平时还是比较经常用到lambda表达式的
--
FROM 183.14.31.*
看来你没用过c#写过大型程序,泄漏1kb本身不是问题,但是非托管内存的泄漏,会到只gc变得很慢,gc会锁进程,最终会导致整个系统的运行速度变慢
【 在 leadu 的大作中提到: 】
: eventhandler这些不算泄露,c#也没有循环引用问题
: 但跨环境(非托管,xamarin)容易出一些问题。
: 内存泄露不是问题,内存泄露导致的稳定性问题才是问题。程序跑一年泄露1kB的这种一般都不修
: ...................
--
FROM 116.24.67.*
非托管内存泄漏,会导致gc频繁且慢,gc会进行锁,所以整个进程就会很慢
打字打错了
【 在 leadu 的大作中提到: 】
: “非托管内存的泄漏,会到只gc变得很慢”
: ???
:
--
FROM 112.97.211.*