熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Java技巧:提高J2SE性能的代碼技巧(下)

2013-11-15 11:44:53  來源: JSP教程 

  格式化

  ■ 文本格式化類

  一 javatextDateFaormat

  一 javatextNumberFaormat

  一 javatextMessageFaormat

  可能非常慢

  ■ 例如第一次調用DateFormatgeInstance()創建超過個對象

  ■ 每次調用DateFormatformat創建個對象加上第一次調用時的那次

  一 重用同一個DateFormat實例而不是重復調用DateFormatgetInstance是很值得做的

  ■ 其它的格式化類有相似的特點

  XML處理SAX

  ■ 處理XML文檔的低級事件驅動庫

  ■ 最好的選擇如果

  一 你需要以線性的方式遍歷整個文檔

  一 你只需要查看幾項

  一 內存效率是一個問題

  XML處理

  ■ 試著在你的應用程序裡消除處理特定XML對象

  ■ 通過一個RMI調用傳遞DOM樹結果會使整個java對象樹序列化通常會倍甚至更多的空間

  Buffered I/O

  ■ I/O類默認不緩沖

  ■ 為你的I/O流使用緩沖的包裝器

  BufferedOutputStream

  BufferedInputStream

  BufferedReader

  BufferedWriter

  ■ 嘗試在構造方法中使用緩沖大小參數

  一 BufferedInputStream:默認個字節(JDK)

  一 BufferedReader:默認個字符(JDK)

  流與Readers

  ■ 在java裡有兩個並行的I/O接口

  Reader和Writer

  一 BufferedInputStream:字符序列(bit)

  InputStream和OutputStream

  一 字節序列(bit)

  ■ 處理基於文本的文件Readers&Writers更快

  更快的幅度達%

  參考OReilly的java Performance Tuning第八章

  新I/O

  ■ 在JDK或更高版本javanio包給出了更多I/O選項

  一 正則表達式匹配

  一 內存映射緩存

  一 非中斷I/O

  ■ 這些能提供更高的I/O性能

  序列化

  ■ 使一個對象變平允許使它流化成一個文件(為了存儲)或者網絡連接(為了傳輸)

  一 添加Serializeable接口標記你的類

  一 通過ObjectInputStream/ObjectOutputStream

  ■ 序列化被遠程方法調用廣泛使用

  ■ 序列化可能會非常昂貴

  一 當你序列化一個對象時這個對象可達的每個對象都會被序列化可能會有非常多的對象

  一 除了內部虛擬機程序還會大量使用反射

  一 序列化是非常繁冗的

  只有一個int數據的類占用個字節

  序列化的對象包括了每個類成員及其值的全限定名

  一 速度是不對稱的反序列化比序列化速度更慢

  序列化transient關鍵字

  ■ 可以重新定義序列化動作

  一 使用transient關鍵字指出不需要在序列化流中包含的成員變量

  Private transient String name;

  一 這讓你可以指出對象裡不重要的成員變量或者當對象讀入內存時可以重新計算的成員變量

  序列化Externalizable接口

  ■ 消除序列化負載實現Externalizable接口而不是Serializable

  Public void readExternal(ObjectInput out)

  Public void writerExternal(ObjectOutput out)

  ■ 程序員完全要負責

  一 管理序列化內容

  一 調用readExternal()/wirteExternal()方法序列化對象

  Externalizable

  


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19550.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.