JBOSS 點滴

          豐豐的博客

          程序優化

          1.如果沒有線程同步,最好習慣用StringWriter而不是StringBuffer,因為,StringBuffer是線程安全的,所以,效率會稍微低一點.
            當然JDK5以后,還提供了StringBulder,這個類要比StringWriter更好用一些,當然也不是線程安全的. 
            如果要用StringBuffer,請盡量使用append,不要用+,在用StringBuffer時盡量先分配空間如:StringBuffer s = new StringBuffer(45);
          2.數據庫查詢的結果集處理,我們對數據庫操作時,可能會針對里面的數據做處理性質的遷移.一般都是先Select一把,然后把結果集的內容處理,
            最后Insert或Update回數據庫.這個是效率最低下的.無論是否使用Hibernate都很低下.當然,最好是寫一個存儲過程來完成這件事,
            我們只是調用一下,觸發這個事件就可以了.如果非要自己寫程序完成,
            那么,一定要注意,你在Select的時候,不要將所有數據一次性全都查詢出來,
            要按行數分次處理否則很容易將內存暴掉.因為,這些數據即使你已經處理完了,
            但是,對象有可能被Map或者Collection的某個對象所引用,這樣JVM就無法進行回收.
          3.程序慢,要找到瓶頸在哪里,這樣才能解決.一般是三大部分,一個CPU占用率過高;一個是硬盤訪問過于頻繁;一個是網絡擁塞.
            a.CPU占用又可以分三個部分,一個是tomcat占用過高;一個是數據庫占用過高;另一個是其他程序(如遠程控制程序)占用過高...tomcat過高,
             最有可能是處理數據算法效率太低.數據庫占用過高,最有可能的是頻繁對一個已經很長的表進行了操作(可以通過建臨時表來進行緩解,效果不錯).
             其他程序想辦法不使用這些程序或再找個空閑的服務器來run這些程序.
            b.一般硬盤訪問頻繁,CPU是不會過高的.比如有一個循環程序,因數據不合要求總是打印日志,而日志就寫在文件里,
               這樣,由于寫日志文件而使得處理線程進展緩慢.可以通過對數據進行預處理,來緩解硬盤訪問頻繁的狀況,或者根據特點采用緩沖區,多線程寫文件等技術來解決這樣的問題.
           c.網絡擁塞,看看是否有網絡攻擊(DOS或者ARP之類的),或者增加帶寬.如果是由于聯通和電信的互訪造成慢的,那么可以考慮使用鐵通之類的節點進行中轉,效果還算可以.

          posted on 2009-08-14 11:56 半導體 閱讀(231) 評論(0)  編輯  收藏 所屬分類: JBOSS應用服務器設置

          主站蜘蛛池模板: 涞水县| 云梦县| 云龙县| 大英县| 汾阳市| 腾冲县| 遂平县| 竹北市| 象州县| 顺义区| 新安县| 玛曲县| 仙游县| 赣榆县| 蓝山县| 绥德县| 宁夏| 自贡市| 门源| 隆昌县| 达州市| 沅陵县| 新丰县| 舒兰市| 大悟县| 通辽市| 锦州市| 客服| 邯郸市| 吉木萨尔县| 大悟县| 拜泉县| 游戏| 神木县| 长岛县| 班玛县| 桐乡市| 安阳市| 会泽县| 临泽县| 栾川县|