Make your java server faster

來源:互聯網
上載者:User
1. NIO

使用JDK1.4中提供的New IO來處理多串連的情況,用以取代舊有的一用戶端一線程的IO模型。

NIO能提高伺服器效能的關鍵在於NIO給JAVA提供了非阻塞的IO模型。以前需要用一個線程來等待使用者的資料,現在只需要用select“選擇”出ready(就緒)的socket,然後在有資料的時候才去讀。這樣能夠用很少的幾個線程同時向大量的串連使用者提供服務,免去了線程切換帶來的開銷。

2. Thread Pool (SEDA)

把你的伺服器的處理過程分解為Stage,給每個Stage配以一個線程池來並發處理Event。Stage之間通過Event來互相轉換。

SEDA的秘訣在於總的來說,並發是有好處的。通過把伺服器的處理過程分解為Stage,提高了伺服器的模組性。同時給每個Stage配置一個自己的線程池來處理它的事件,能夠精緻調整其池的大小,決定這個Stage的並發性。雖然SEDA的創始者把他寫的SandStorm寫得n複雜,但是SEDA本身的思想很簡單,利用JDK1.5提供給我們的良好線程支援,百來行代碼就能實現一個SEDA的模型出來。

3. StAX

使用StAX來代替DOM或者SAX。流式的XML解析能夠消耗更少的記憶體,而且速度更快。

DOM很耗費記憶體,需要效能的地方肯定不能考慮。SAX很龐大肥碩,比起Pull式的流式Parser來,還是慢。StAX是Pull式流式Parser標準化的產物,04年已經是final了的jsr。現在有一個BEA提供的RI,使用APL協議。伺服器實現的一般是協議式的東西,往往是以流為中心,而不是以文檔為中心,而且往往需要自己控制著parser去解析,使用StAX最適合不過了。

4. Javolution

在大量產生臨時記憶體的地方,而且是反覆被使用的部分,使用Javolution即時架構來“精緻地”管理記憶體。

5. In general

好的記憶體管理與恰當的並發是使得程式效能更好負載能力更強的關鍵。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.