none
发现了有趣的现象,请问为什么??? RRS feed

  • 问题

  • 在WinCe 环境下用C#开发了一个串口采集程序。

    由原来的多线程串口读写,改为了单个“Timer”计时器控制所有串口的读写,这样节省了不少的内存。

    发现了一个有趣的现象:

    随着程序的运行,系统显示使用的内存会增长。  
    但是,只要人为的点击下程序的主窗体,不需要任何操作,只要点击一下,“系统内存的使用”从内存资源监视器上看,会立刻降下来。   下降到和程序刚开启的时候差不太多。

    这是现象是为什么???        

    问题一:难道是因为点击主窗体一下,程序内存资源就释放了???

    问题二:难道是点击主窗体一下,“内存资源监视器”刷新了。  但是,不点击主窗体的时候,,“内存资源监视器”也会刷新啊,而且还会自动减少。(但是整体还是增长的。)

    问题三:如果开启线程(现在没有使用),线程申请资源的速度  大于 垃圾回收器释放资源的速度,那么就会发生程序开启后内存持续增长。  直到二者速度相等的时候吗???

    Science and technology is my lover.


    2014年8月14日 13:59

全部回复

  • 问题一:难道是因为点击主窗体一下,程序内存资源就释放了???

    >>>不会

    问题二:难道是点击主窗体一下,“内存资源监视器”刷新了。 但是,不点击主窗体的时候,,“内存资源监视器”也会刷新啊,而且还会自动减少。(但是整体还是增长的。)

    >>>如果是内存泄露,可以考虑更长时间的煲机。这样会出现内存不足的提示,系统崩溃的。如果不会出现,则只能说明是刷新的问题。

    问题三:如果开启线程(现在没有使用),线程申请资源的速度 大于 垃圾回收器释放资源的速度,那么就会发生程序开启后内存持续增长。 直到二者速度相等的时候吗??? >>>开启线程与资源回收没有关系,除非你的线程开的速度大于关的速度、且线程不停的开,这样会导致内存持续增加。

    使用 C#,但还是建议自己的程序来管理自己申请的内存,不要去依赖于系统的回收机制。


    Leo.Zheng


    • 已编辑 Leo.Zheng 2014年12月22日 2:12 显示格式错误
    2014年12月22日 2:08