这个内存的占用量会很大吗?我假设你的那句代码是在timer的tick时执行,自己做了个例子,也就大概10秒钟左右上涨几K而已啊

解决方案 »

  1.   

    内存溢出 只有个原因 就是间隔时间太短 重复做一件事最好不要在timer事件里面不断实例化对象timer事件里无休止执行的时候 间隔不要太短 
      

  2.   

    lorenliu:
    这个内存的占用量会很大吗?我假设你的那句代码是在timer的tick时执行,自己做了个例子,也就大概10秒钟左右上涨几K而已啊这个只是一个线程 而且是个服务程序 要求长时间启动的-------------------------------------------------------------------------------------------
    tmxk2002:
    贴你的代码,估计又是作死的往静态变量里塞东西,然后不去释放。 
    再大的内存都会爆掉。是个状态信息 始终需要更新 这个变量下次使用时还要用 怎么释放呢
    --------------------------------------------------------------------------------------------
    sckoo:
    内存溢出 只有个原因 就是间隔时间太短 重复做一件事 
    最好不要在timer事件里面不断实例化对象 
    timer事件里无休止执行的时候 间隔不要太短我本来是在一个线程里做的 用的是Thread.sleep 做的间隔 但是本身要求实时性强 间隔短 
      

  3.   

    就这点东西 没有什么隐藏的 只是没有前面那个例子容易说明 放在线程里执行的 中间thread.sleep(50);        
    currenState = GetState(ID);
    if (currenState != lastState)
    {
      State_Change();
    }
    lastState = currenState;
    //简单说明一下就是监听一个状态改变
      

  4.   

    State_Change里干了什么?
    然后你这些变量会每次执行完后释放掉不?
      

  5.   

    State_Change(); 被我注释掉了 还是同样的情况
    不是那的问题
      

  6.   

    如果其它地方都没问题的话,只能解释为每次 DateTime.Now.ToLongTimeString();调用时都生成了一个String对象,不同值的String对象要占用不同的内存空间。所以内存就会一直往上涨但是我自己不大认为是这个原因,应该还是别的地方出了什么问题
      

  7.   

    我自己分析的lastState和currenState这两个变量始终在赋值 而且c#里 对于string类型 也是引用
    每次 = 操作 就是new了一个string 但是老的string 没有释放这个是我自己的看法,还请高手多多指教 
      

  8.   

    tmxk2002 :
    你给的代码太少,不要你想着认为这里就给这里。如果你开了多线程,很有可能导致内存泄漏问题。 
    特别是把线程压到系统线程池里的操作。帖子内已经举例说明了
    C# form窗体里加个定时器 执行一句 “time = DateTime.Now.ToLongTimeString();”(time为成员属性) 
    随着运行 windows任务管理器里的内存占用量一直上升 
    怎么才能控制内存占用量呢?先把这个解决了吧
      

  9.   

    如果单纯是这样,不可能会出现内存泄漏的问题。timer很多人在用,没有人说它会内存泄漏,一个对变量赋值也是最基本的,Now的ToLongTimeString是不可能有内存泄漏的,肯定是与之相关的其他地方导致的,
    把怎么启用timer,timer运行的代码都贴一下呗,哪怕把你那个form的代码全贴出来都行啊,断章取义的估计帮不上你了。呵呵