最小化servlet中的java 同步。
不要用servlet的單線程模式。
使用servlet的init()方法進(jìn)行一些昂貴的一次性的初始化。
避免使用System.out.pintln()調(diào)用。
避免使用共享的可修改的類變量
在servlet的多線程模式中(缺省情況下),一個(gè)應(yīng)用服務(wù)器實(shí)例只有一個(gè)的servlet實(shí)例,這個(gè)servlet的所有請(qǐng)求都共享同一個(gè) servlet實(shí)例,如果在servlet內(nèi)有同步代碼塊的話會(huì)造成線程爭(zhēng)奪,因?yàn)閟ervlet的類變量創(chuàng)建需要同步,所以要避免使用共享的可修改的類 變量。
HTTP Session處理
使用HTTP Session的時(shí)候請(qǐng)遵守一下規(guī)則:
不要隨意創(chuàng)建Session, Session的創(chuàng)建不是免費(fèi)的。如果不需要就不要?jiǎng)?chuàng)建
如果session不需要了請(qǐng)使用javax.servlet.http.HttpSession.invalidate()來(lái)釋放session
保證session小型化可以減少反應(yīng)時(shí)間,如果可能的話,請(qǐng)保證session小于7K。
在JSP里面使用<%page session=”false”%>指令來(lái)避免應(yīng)用服務(wù)器自動(dòng)在不需要的時(shí)候創(chuàng)建session.
避免session中存放大的對(duì)象,這樣會(huì)強(qiáng)制序列化和增加過(guò)度計(jì)算,通常情況下不要存放大的對(duì)象到session里面。
不要緩存事務(wù)數(shù)據(jù)到HttpSession里面,訪問(wèn)HttpSession里面的數(shù)據(jù)是非事務(wù)的,最好把這些數(shù)據(jù)存放在數(shù)據(jù)庫(kù)或者用實(shí)體 Bean訪問(wèn),事務(wù)如果失敗會(huì)恢復(fù)到它原來(lái)的狀態(tài),不過(guò),這些失效的或者不再精確的數(shù)據(jù)會(huì)繼續(xù)存放在session里面。應(yīng)用服務(wù)器提供了只讀的bean 管理器去緩存這些只讀的數(shù)據(jù)。
配置和部署技巧
為了提高類的載入時(shí)間,避免在服務(wù)器的CLASSPATH里面使用過(guò)多的目錄,把跟應(yīng)用有關(guān)的類發(fā)放到j(luò)ar文件里面。
HTTP反應(yīng)時(shí)間跟HTTP server調(diào)整有很大關(guān)系。
如果可能,請(qǐng)緩存servlet的結(jié)果。
如果一個(gè)應(yīng)用不含任何JEB,把應(yīng)用部署成war文件,不要部署成ear文件。
禁用Security Manager
Security manager是非常昂貴的,因?yàn)樵谡{(diào)用需要的資源的時(shí)候必須要調(diào)用doPrivileged()方法而且還必須要檢測(cè)server.policy里面的 資源。如果你確信你的服務(wù)器沒(méi)有惡意的代碼而且你也不使用用戶認(rèn)證,你就可以禁用secrity manager.
更多信息請(qǐng)查看IT技術(shù)專欄