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應用服務器設置

          主站蜘蛛池模板: 会同县| 和林格尔县| 宜章县| 应城市| 衡阳市| 郸城县| 晋江市| 原平市| 出国| 全南县| 文水县| 赫章县| 多伦县| 铁岭市| 夏津县| 麟游县| 邢台市| 芜湖县| 竹山县| 神农架林区| 玛纳斯县| 祁阳县| 东阳市| 游戏| 壶关县| 连城县| 抚远县| 高阳县| 家居| 商河县| 大港区| 榆中县| 沽源县| 保靖县| 中阳县| 鹤壁市| 若羌县| 鸡西市| 沿河| 鹤山市| 博白县|