请问这是内存泄漏了吗?怎么解决呢?

BestLifeForUs 2019-11-11 05:29:15

程序不断在3个界面之间重复某个功能,大概几分钟一次,这样的内存,是不是泄漏了呢?怎么解决?谢谢!
...全文
515 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
zrd122767 2019-11-20
  • 打赏
  • 举报
回复
引用 2 楼 BestLifeForUs的回复:
这是第9个快照跟第8个快照的对比
严格说只要不使用非托管代码,.Net 不存在内存泄露问题,只存在使用内存不及时释放的问题。.Net 为了提升性能内部使用了大量缓存,某些不再使用的对象需要 .Net 垃圾收集器自动销毁,但是我们可以调用 GC.Collect 方法强制执行垃圾收集(不过好像意义不大)。
@David Liu 2019-11-20
  • 打赏
  • 举报
回复
引用 8 楼 WQR1994的回复:
[quote=引用 6 楼 wanghui0380 的回复:]
不要自己吓自己,别在XX园看到几个名词就乱用

假设北京西站每半小时发100次车,每次车可以装2千人。那么候车大厅里现在有5w人,这代表说明?
叫旅客泄漏?

正常的有进有出,不是意外的没处理,也许有堆积,有滞留,但不叫泄露。
说明叫内存泄漏-----------------只有说他的主体都走了,但他自己留下了,这才是泄漏。比如车走了,你留下了。你被泄漏了

在自动GC的语言,设想中该被回收的资源没自动回收,也算内存泄漏吧?[/quote] 资源管理器会自动回收的,不过不一定都是马上回收,周期性回收的程序资源使用越多,频率越高,在程序关闭后所有资源都会被回收的。不然就是泄露了哈
luj_1768 2019-11-18
  • 打赏
  • 举报
回复
随着程序运行时间增长,数据记录变长是正常的。简单切换界面、而不是界面之间相互交换数据,对于数据增长应该没有什么影响。要知道,系统是可以同时独立运行几个程序的。
weixin_28896685 2019-11-15
  • 打赏
  • 举报
回复
内存只增不减,软件挂掉,需要处理
BestLifeForUs 2019-11-15
  • 打赏
  • 举报
回复
引用 25 楼 weixin_28896685 的回复:
内存只增不减,软件挂掉,需要处理
怎么处理啊
BestLifeForUs 2019-11-15
  • 打赏
  • 举报
回复
引用 23 楼 千梦一生 的回复:
内存泄露是创建了内存而没有释放,却失去了最后的一个能操作其地址的(变量?/句柄?/指针?)反正就这东西。 现象就是该块内存已经不能被一个正常人以一种正常的方式进行访问了。而操作系统却因你没有释放掉而一直认为你在使用而坚持为你保存这个内存不允许被别的给申请走。 .net里的话,一般而言。只要你的代码全是在安全代码块里的。基本不用考虑这个问题。它GC有bug那就.....还是可能泄露
内存只增不减啊
BestLifeForUs 2019-11-15
  • 打赏
  • 举报
回复
引用 19 楼 正怒月神 的回复:
[quote=引用 18 楼 BestLifeForUs 的回复:] [quote=引用 12 楼 正怒月神 的回复:] gc是过一段时间才会回收的。 不是时时的。 你把程序开着,明天看cpu
不用到明天,就几小时后就因为没内存死机了。[/quote] 3个窗体界面,重复的功能,是通过事件完成的吗? 会不会是重复绑定事件导致的呢?[/quote] 有一些事绑定事件,监听下位机返回的信息
千梦一生 2019-11-14
  • 打赏
  • 举报
回复
内存泄露是创建了内存而没有释放,却失去了最后的一个能操作其地址的(变量?/句柄?/指针?)反正就这东西。
现象就是该块内存已经不能被一个正常人以一种正常的方式进行访问了。而操作系统却因你没有释放掉而一直认为你在使用而坚持为你保存这个内存不允许被别的给申请走。
.net里的话,一般而言。只要你的代码全是在安全代码块里的。基本不用考虑这个问题。它GC有bug那就.....还是可能泄露
wanghui0380 2019-11-14
  • 打赏
  • 举报
回复
楼上说了,你运行一天,然后看情况。 1.内存只增不减,软件挂掉,需要处理 2.内存最终平稳,但看着太太,需要处理 3.当你把这个所谓的“3个界面之间重复某个功能”在某个时段停掉以后,这个内存再经过一段时间的“静置”都不降,恭喜你,这时候你就可以用上你从XX园学来的名词“泄漏”了,因为我们说车都走了,人也应该散了,现在车都走了,人还堆着呢
? only ? you 2019-11-14
  • 打赏
  • 举报
回复
拔下来试试看
正怒月神 2019-11-14
  • 打赏
  • 举报
回复
引用 18 楼 BestLifeForUs 的回复:
[quote=引用 12 楼 正怒月神 的回复:] gc是过一段时间才会回收的。 不是时时的。 你把程序开着,明天看cpu
不用到明天,就几小时后就因为没内存死机了。[/quote] 3个窗体界面,重复的功能,是通过事件完成的吗? 会不会是重复绑定事件导致的呢?
BestLifeForUs 2019-11-14
  • 打赏
  • 举报
回复
引用 12 楼 正怒月神 的回复:
gc是过一段时间才会回收的。 不是时时的。 你把程序开着,明天看cpu
不用到明天,就几小时后就因为没内存死机了。
BestLifeForUs 2019-11-14
  • 打赏
  • 举报
回复
引用 11 楼 HyoJung 的回复:
短时间的增长不算溢出,但是增长后不释放才是问题
一直升高的,几小时后越来越高
datafansbj 2019-11-13
  • 打赏
  • 举报
回复
垃圾收集回收内存机制不是我们“设想”的那个样子的,你以为应该回收了,.Net 不这么认为,至于为什么,仔细研究 .Net 内核机制吧。
BestLifeForUs 2019-11-13
  • 打赏
  • 举报
回复
引用 10 楼 datafansbj 的回复:
垃圾收集回收内存机制不是我们“设想”的那个样子的,你以为应该回收了,.Net 不这么认为,至于为什么,仔细研究 .Net 内核机制吧。
怎么把该回收的都回收啊
BestLifeForUs 2019-11-13
  • 打赏
  • 举报
回复
引用 7 楼 WQR1994 的回复:
你是三个界面互相调用,还是非UI线程操作三个窗口,还是UI线程操作?
一个界面操作完了就自动跳转到另一个界面,没有进行线程操作
BestLifeForUs 2019-11-13
  • 打赏
  • 举报
回复
引用 5 楼 datafansbj 的回复:
严格说只要不使用非托管代码,.Net 不存在内存泄露问题,只存在使用内存不及时释放的问题。.Net 为了提升性能内部使用了大量缓存,某些不再使用的对象需要 .Net 垃圾收集器自动销毁,但是我们可以调用 GC.Collect 方法强制执行垃圾收集(不过好像意义不大)。
怎么强制执行啊 很多内存都没有释放 虽然都有释放 但内存总体一直上升。
正怒月神 2019-11-13
  • 打赏
  • 举报
回复
gc是过一段时间才会回收的。 不是时时的。 你把程序开着,明天看cpu
大鱼> 2019-11-13
  • 打赏
  • 举报
回复
短时间的增长不算溢出,但是增长后不释放才是问题
data-v 2019-11-12
  • 打赏
  • 举报
回复
引用 6 楼 wanghui0380 的回复:
不要自己吓自己,别在XX园看到几个名词就乱用

假设北京西站每半小时发100次车,每次车可以装2千人。那么候车大厅里现在有5w人,这代表说明?
叫旅客泄漏?

正常的有进有出,不是意外的没处理,也许有堆积,有滞留,但不叫泄露。
说明叫内存泄漏-----------------只有说他的主体都走了,但他自己留下了,这才是泄漏。比如车走了,你留下了。你被泄漏了

在自动GC的语言,设想中该被回收的资源没自动回收,也算内存泄漏吧?
加载更多回复(7)

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧