PHPz2017-04-18 09:16:06
一個類別寫出來的時候,它只是躺在一個以.java為後綴的文字檔裡,簡單地說,就是在硬碟裡。
寫好的Java檔案經過編譯變成.class檔案後,由Java虛擬機器裝載運作。
而運作的時候,類別是在記憶體中表示的。透過new
關鍵字產生的實例,也是在記憶體中存在的。
類別的實例在記憶體中有一定的儲存格式(可以參考Java虛擬機規範,物件的儲存格式),這跟它還沒有被執行時間躺在硬碟時的儲存格式是不一樣的。
序列化,就是將記憶體中的一個實例,以另外一種儲存方式(參考《Core Java》)儲存在硬碟中,換個說法就叫持久化。
這樣,只要別人拿到這個序列化後的實例的數據,就能透過反序列化把這個物件當時的狀態還原出來。
序列化應用的場景有很多,rmi,rpc。可以參考相關資料。
巴扎黑2017-04-18 09:16:06
1.rmi(遠端方法呼叫)。當向遠端物件傳遞訊息時,需要物件序列化來傳送參數和傳回值。
2.實現輕量級的persistence,透過將序列化過物件寫入磁碟,等程式再次運行的時候再把它讀出來。