- 主题:请教板上大佬,常见的memory leak通常发生在什么情况呢
用.net 5仿照SO题主的代码测试了一下,发现在Test类生成的IL里有这么一段
.field public static class [System.Runtime]System.Func`2<object, bool> '<>9__0_0'
这应该是这个lambda被自动生成的field成员吧, 看这个类的类型的话,感觉不能算作Leak吧.
【 在 ustcBoy 的大作中提到: 】
: 学习了一下SO说的这个例子,感觉它是指这个lamba 局部变量将会是一个静态的存在,所以无法被GC了,但是Test这个类应该还是在GC的管辖内的。所以即使多次创建的Test也只会有一个lambda成员作为静态存在,而多次创建的Test对象最终都会被回收。这应该不用被视作leak吧?
: 不知道我理解的对不对。
--
FROM 60.180.33.*
不算 leak
【 在 ustcBoy (ustcBoy) 的大作中提到: 】
: 用.net 5仿照SO题主的代码测试了一下,发现在Test类生成的IL里有这么一段
: .field public static class [System.Runtime]System.Func`2<object, bool> '<>9__0_0'
: 这应该是这个lambda被自动生成的field成员吧, 看这个类的类型的话,感觉不能算作Leak吧.
: ...................
--
FROM 113.65.10.*
我电脑休眠(不是按关机)、休眠了10分钟还欲罢不能,这是内存泄漏了嘛?
【 在 ustcBoy 的大作中提到: 】
:
--
FROM 101.71.38.*
访问不了又无法gc的叫leak
访问的了但不想访问的,那叫代码没有写好
【 在 ustcBoy 的大作中提到: 】
: 是不是要看具体应用场景呢? 如果是桌面应用中,主窗口一直存活的情况下,错误的保持了对一些服务或者VM的事件引用导致它们无法被GC回收的话,应该会有影响吧?
: 我没有具体碰到这样的问题,只是纯脑补。请有经验的大佬分享一下体会。
--
FROM 123.115.140.*
看来你没用过c#写过大型程序,泄漏1kb本身不是问题,但是非托管内存的泄漏,会到只gc变得很慢,gc会锁进程,最终会导致整个系统的运行速度变慢
【 在 leadu 的大作中提到: 】
: eventhandler这些不算泄露,c#也没有循环引用问题
: 但跨环境(非托管,xamarin)容易出一些问题。
: 内存泄露不是问题,内存泄露导致的稳定性问题才是问题。程序跑一年泄露1kB的这种一般都不修
: ...................
--
FROM 116.24.67.*
非托管内存不应该是gc负责范围之外的么?
【 在 letdown (不知道我是谁) 的大作中提到: 】
: 看来你没用过c#写过大型程序,泄漏1kb本身不是问题,但是非托管内存的泄漏,会到只gc变得很慢,gc会锁进程,最终会导致整个系统的运行速度变慢
--
FROM 114.86.46.*
“非托管内存的泄漏,会到只gc变得很慢”
???
【 在 letdown 的大作中提到: 】
: 看来你没用过c#写过大型程序,泄漏1kb本身不是问题,但是非托管内存的泄漏,会到只gc变得很慢,gc会锁进程,最终会导致整个系统的运行速度变慢
:
--
FROM 123.116.199.*
非托管内存泄漏,会导致gc频繁且慢,gc会进行锁,所以整个进程就会很慢
打字打错了
【 在 leadu 的大作中提到: 】
: “非托管内存的泄漏,会到只gc变得很慢”
: ???
:
--
FROM 112.97.211.*
1kb的非托管内存泄漏,为什么会导致gc频繁且慢?
【 在 letdown 的大作中提到: 】
: 非托管内存泄漏,会导致gc频繁且慢,gc会进行锁,所以整个进程就会很慢
: 打字打错了
:
--
FROM 123.115.136.*