JVM機制(非原創,資源來源於網上)

java採起多線程機制,每一個線程之間公用一個主內存,而後每一個線程都有本身的工做內存,線程工做的時候,經過主內存和本身的工做內存進行交互,交給線程處理java

 

程序計數器是一塊記錄着執行代碼地址的內存,因爲線程執行是相似cpu之間來回切換,因此多個線程之間也是來回切換執行,因此每一個線程都必須有本身的程序計數器,記錄這當前執行代碼的地址,而且各個線程之間的程序計數器不能相互影響,因此每一個程序計數器都是線程私有,與線程無關。多線程

Java棧也是線程私有,java虛擬站描述的是Java執行的內存模型,方法執行的時候會建立一個棧幀,記錄着局部變量表,動態連接,操做表,方法出口,方法執行的過程,就是入棧和出棧的過程spa

Java堆線程共享,多放實例變量線程

方法區,線程共享,放編譯以後的代碼和數據對象

五、運行時常量池blog

運行時常量池(Runtime Constant Pool)是方法區的一部分。Class 文件中除了有接口

類的版本、字段、方法、接口等描述等信息外,還有一項信息是常量池(Constant Pool內存

Table),用於存放編譯期生成的各類字面量和符號引用,這部份內容將在類加載後存放字符串

到方法區的運行時常量池中。get

 

聲明爲static和transient類型的成員數據不能被序列化。由於static表明類的狀態,transient表明對象的臨時數據

 

 

「==」比較兩個變量自己的值,即兩個對象在內存中的首地址。

 

「equals()」比較字符串中所包含的內容是否相同。

 

object類是全部類的父類   有 toString(),getClass(),equals(),clone(),finalize()等方法,

toString() : 若是在實際使用中爲特定對象提供一個特定的輸出模式,當這個類型轉換爲字符串或字符串鏈接時,建自動調用重寫的toString()方法。 

 

equals和==的區別:

對於字符串變量來講,使用「==」和「equals()」方法比較字符串時,其比較方法不一樣。

「==」比較兩個變量自己的值,即兩個對象在內存中的首地址。

「equals()」比較字符串中所包含的內容是否相同。

object類中比較equals是比較的地址,兩個字符串常量所表示的地址是相同的

注意還有常量池的概念,若是首先建立了一個常量,就會保存在常量池中,再次建立變量的時候,就會去常量池中尋找這個常量,若是有的話,直接指向這個常量無需再次建立對象

相關文章
相關標籤/搜索