占尽cpu不占内存
不是程序中有死循环就是中毒了
看看哪个进程占资源吧

解决方案 »

  1.   

    java中对一般的都会自动gc,但是对系统的关键资源,如数据库链接,socket,文件流等都必须显式的关闭,不然肯定会出问题的。我曾经做的一个系统就由于有人没有关闭数据库链接而发生outofmemory,查了很久才找到。lz先查找代码,显式的把这些关键资源关闭掉。如果和这些无关,再找其他原因,也许是某个操作耗时,查查对应的代码。good luck,比较麻烦了
      

  2.   

    数据库操作导致的,你最好把关闭放在finally{}内
      

  3.   

    如上把数据库该关的都关好了。
    另。查找程序功能实现代码中的循环语句有否跳不出来的循环(这个会强烈占用CPU而不占用内存),并注意所有算法,很多算法用不得当会导致GC不会释放无用的对象。
    再。关注系统中的线程,最好能跟踪看是否有线程在程序结束时不关闭。
    最后。建议你查找的时候耐心点。仔细跟踪比较重要的、贯穿全局的和用的比较多的对象的运行情况
      

  4.   

    你的怀疑是有道理的,我的一个朋友也出现过类似的情况,就是数据库没有关闭也没有trycatch
      

  5.   

    我现在在努力关闭数据库的操作,这两天关闭了很多了。可是系统还是没有得到好转。所以怀疑是不是有什么死循环。我现在停用了一部分模块,测试是否是这部分模块导致的问题。另外,现在线程数总是在不断增加,无法退出。好象和用户数没有太大关系。我们开发的另一个系统,架构和底层都差不多少。那个就比较正常,cpu空闲在90%,线程都是在1和0之间变换!
      

  6.   

    我现在在努力关闭数据库的操作,这两天关闭了很多了。可是系统还是没有得到好转。所以怀疑是不是有什么死循环。我现在停用了一部分模块,测试是否是这部分模块导致的问题。另外,现在线程数总是在不断增加,无法退出。好象和用户数没有太大关系。我们开发的另一个系统,架构和底层都差不多少。那个就比较正常,cpu空闲在90%,线程都是在1和0之间变换!
    Top
    --------------------------------------------------------------------------------------
    关闭的时候记得
    try{
    }catch(){
    }finally{
       con.close();
    }
    这样可以防止程序异常时 没有关闭CON的情况!
    还有catch{}内不要放置跳转等语句!
    你也可以将所有的异常捕获方在一个栈内,然后在服务器端处理,判断 关闭CON
      

  7.   

    function show(){
      cxjsjyrq();
      setTimeout("show()",<%=Integer.parseInt(csz)*60000%>);
    }以上代码执行的操作是,每隔一段时间调用cxjsjyrq()的方法。cxjsjyrq()方法是查询数据库的操作。这段代码是加在一个jsp当中,那么是不是每调用一次这个jsp,那么show()方法就会调用一次,就产生一次循环呢?如果这样,我多次刷新这个jsp页面,那么是不是就会调用多次show()方法,占用多个线程呢?那这样CPU资源就会耗费殆尽吧?