java鈍化
① java 為什麼序列化
序列化可以將內存中的類寫入文件或資料庫中。比如將某個類序列化後存為文件,下次讀取時只需將文件中的數據反序列化就可以將原先的類還原到內存中。也可以將類序列化為流數據進行傳輸。總的來說就是將一個已經實例化的類轉成文件存儲,下次需要實例化的時候只要反序列化即可將類實例化到內存中並保留序列化時類中的所有變數和狀態。
例如:hibernate中實體類的鈍化就是將類序列化後存入磁碟並釋放內存空間。
② java實體類為什麼要實現序列化
解答如下:
當客戶端訪問某個能開啟會話功能的資源,web伺服器就會創建一個HTTPSession對象,每個HTTPSession對象都會佔用一定的內存,如果在同一個時間段內訪問的用戶太多,就會消耗大量的伺服器內存,為了解決這個問題我們使用一種技術:session的持久化。
什麼是session的持久化?
web伺服器會把暫時不活動的並且沒有失效的HTTPSession對象轉移到文件系統或資料庫中儲存,伺服器要用時在把他們轉載到內存。
把Session對象轉移到文件系統或資料庫中儲存就需要用到序列化; java.io.Serializable。
在tomcat重啟的時候進行一個鈍化操作、啟動成功之後再進活化。
在對應的區域載入進來,不會丟失(前提是session中的存放的變數必須實現序列化介面才能鈍化,才能序列到硬碟上的一個二進制文件中去)。
③ Java中為什麼要序列化什麼時候用到序列化
序列化可以將內存中的類寫入文件或資料庫中。比如將某個類序列化後存為文件,下次讀取時只需將文件中的數據反序列化就可以將原先的類還原到內存中。也可以將類序列化為流數據進行傳輸。總的來說就是將一個已經實例化的類轉成文件存儲,下次需要實例化的時候只要反序列化即可將類實例化到內存中並保留序列化時類中的所有變數和狀態。
例如:hibernate中實體類的鈍化就是將類序列化後存入磁碟並釋放內存空間。
④ 什麼是java序列化,如何實現java序列化
序 列 化: 指把堆內存中的Java對象數據,通過某種方式把對象存儲到磁碟文件中或者傳遞給其他網路的節點(在網路上傳輸).我們把這個過程稱之為序列化.
反序列化:把磁碟文件中的對象數據或者把網路節點上的對象數據,恢復成Java對象的過程.
為什麼要做序列化:
1):在分布式系統中,需要共享的數據的JavaBean對象,都得做序列化,此時需要把對象再網路上傳輸,此時就得把對象數據轉換為二進制形式.以後存儲在HttpSession中的對象,都應該實現序列化介面(只有實現序列化介面的類,才能做序列化操作).
2):服務鈍化:如果服務發現某些對象好久都沒有活動了,此時伺服器就會把這些內存中的對象,持久化在本地磁碟文件中(Java對象-->二進制文件).如果某些對象需要活動的時候,現在內存中去尋找,找到就使用,找不到再去磁碟文件中,反序列化我們得對象數據,恢復成Java對象.
需要做序列化的對象的類,必須實現序列化介面:java.io.Serializable介面(標志介面[沒有抽象方法]).
底層會判斷,如果當前對象是Serializable的實例,才允許做序列化. boolean ret = Java對象 instanceof Serializable;
在Java中大多數類都已經實現Serializable介面.
⑤ 求教servlet中的session的鈍化活化機制可以人工管理嗎
您好,很高興為您解答。
微軟msn摘錄:
在 Java 語言中,此介面處理從一個伺服器移動到另一個伺服器的會話。它有兩個方法:sessionWillPassivate 和 sessionDidActivate。
應該是在部署集群應用時當一個集群節點要將session轉移到另一個節點時做的事
就是先鈍化session(應該是存入硬碟再從結點內存刪除該session)再在另一個結點活化session(從硬碟讀出並加入內存)
所以作為session屬性放入session的對象應該實現java.io.Serializable
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
~ O(∩_∩)O~
⑥ java 連接池 里的connections如何創建出來的,如何鈍化和激活,求源碼及詳解
public class ConnectionFactory { private static final String driver = "com.mysql.jdbc.Driver";/*驅動不同的資料庫不同的驅動,我這個是mysql的*/ private static final String url = "jdbc:mysql://localhost:3306/表名"; private static final String user = "root"; private static final String password = "密碼"; private static ConnectionFactory conf; private ConnectionFactory(){} public static ConnectionFactory getCon(){ if(conf == null){ conf = new ConnectionFactory(); } return conf; } public static java.sql.Connection getConnection(){ java.sql.Connection con = null; try { Class.forName(driver); con = java.sql.DriverManager.getConnection(url, user, password); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return con; } }
⑦ javaweb鈍化後的文件多少時間會消失
你是導出到桌面的文件夾里沒有java文件,還是原來的工程里的java文件都沒了?如果是原來的工程里的都沒了,是蠻奇怪的……,你看看WEB-INF/classes下面的class文件還在不在,如果在的話是可以反編譯的。可以用jd-gui反編譯
⑧ java中的鈍化是什麼意思
伺服器內存不夠了,把最近不活動的session序列化到磁碟,在序列化之前你會收到監聽事件
如果這個鈍化的用戶某個時候又訪問了,伺服器在內存沒找到session,就去磁碟找,再反序列化到內存,這個時候你又會收到監聽事件
你放入session的一切變數都必須是可序列化的,否則失敗
什麼時候序列化和反序列化完全由容器決定,你只能監聽事件
⑨ java作用域
作用域,顧名思義,起作用的大小范圍也。在Java語言中,作用域是由花括弧的位置決定的,它決定了其定義的變數名的可見性與生命周期。
⑩ java web session鈍化問題
鈍化,沒記錯的話是正常關閉的時候才進行。
就是沒有過期失效的都會,和1分鍾,10分鍾沒有關系。
取決於什麼時間關閉