中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行JVM內存模型使用

發布時間:2021-10-23 16:41:13 來源:億速云 閱讀:160 作者:柒染 欄目:編程語言

這篇文章給大家介紹如何進行JVM內存模型使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

你對JVM內存模型是否熟悉,這里和大家分享一下,主要包括棧和堆兩部分內容,Java棧是與每一個線程關聯的,JVM在創建每一個線程的時候,會分配一定的棧空間給線程。它主要用來存儲線程執行過程中的局部變量,方法的返回值,以及方法調用上下文。Java中堆是由所有的線程共享的一塊內存區域,堆用來保存各種JAVA對象,比如數組,線程對象等。

JVM內存模型

  1.1Java棧

Java棧是與每一個線程關聯的,JVM在創建每一個線程的時候,會分配一定的棧空間給線程。它主要用來存儲線程執行過程中的局部變量,方法的返回值,以及方法調用上下文。棧空間隨著線程的終止而釋放。StackOverflowError:如果在線程執行的過程中,棧空間不夠用,那么JVM就會拋出此異常,這種情況一般是死遞歸造成的。

1.2堆

Java中堆是由所有的線程共享的一塊內存區域,堆用來保存各種JAVA對象,比如數組,線程對象等。

1.2.1Generation

JVM內存模型中JVM堆一般又可以分為以下三部分:

◆Perm

Perm代主要保存class,method,filed對象,這部門的空間一般不會溢出,除非一次性加載了很多的類,不過在涉及到熱部署的應用服務器的時候,有時候會遇到java.lang.OutOfMemoryError:PermGenspace的錯誤,造成這個錯誤的很大原因就有可能是每次都重新部署,但是重新部署后,類的class沒有被卸載掉,這樣就造成了大量的class對象保存在了perm中,這種情況下,一般重新啟動應用服務器可以解決問題。

◆Tenured

Tenured區主要保存生命周期長的對象,一般是一些老的對象,當一些對象在Young復制轉移一定的次數以后,對象就會被轉移到Tenured區,一般如果系統中用了application級別的緩存,緩存中的對象往往會被轉移到這一區間。

◆Young

Young區被劃分為三部分,Eden區和兩個大小嚴格相同的Survivor區,其中Survivor區間中,某一時刻只有其中一個是被使用的,另外一個留做垃圾收集時復制對象用,在Young區間變滿的時候,minorGC就會將存活的對象移到空閑的Survivor區間中,根據JVM的策略,在經過幾次垃圾收集后,任然存活于Survivor的對象將被移動到Tenured區間。

1.2.2SizingtheGenerations參考資料:

JVM內存模型中提供了相應的參數來對內存大小進行配置。正如上面描述,JVM中堆被分為了3個大的區間,同時JVM也提供了一些選項對Young,Tenured的大小進行控制。

◆TotalHeap

-Xms:指定了JVM初始啟動以后初始化內存

-Xmx:指定JVM堆得***內存,在JVM啟動以后,會分配-Xmx參數指定大小的內存給JVM,但是不一定全部使用,JVM會根據-Xms參數來調節真正用于JVM的內存參考資料:

-Xmx-Xms之差就是三個Virtual空間的大小

◆YoungGeneration

-XX:NewRatio=8意味著tenured和young的比值8:1,這樣eden+2*survivor=1/9

堆內存

-XX:SurvivorRatio=32意味著eden和一個survivor的比值是32:1,這樣一個Survivor就占Young區的1/34.

-Xmn參數設置了年輕代的大小

◆PermGeneration

-XX:PermSize=16M-XX:MaxPermSize=64M

ThreadStack

 -XX:Xss=128K

1.3堆棧分離的好處

其它的先不說了,就來說說面向對象的設計吧,當然除了面向對象的設計帶來的維護性,復用性和擴展性方面的好處外,我們看看面向對象如何巧妙的利用了堆棧分離。如果從JAVA內存模型的角度去理解面向對象的設計,我們就會發現對象它***的表示了堆和棧,對象的數據放在堆中,而我們編寫的那些方法一般都是運行在棧中,因此面向對象的設計是一種非常***的設計方式,它***的統一了數據存儲和運行。

關于如何進行JVM內存模型使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jvm
AI

武平县| 杭锦后旗| 浦北县| 理塘县| 合肥市| 南投县| 咸阳市| 晋中市| 贵港市| 岫岩| 桦川县| 三原县| 共和县| 甘南县| 荆州市| 嘉禾县| 富民县| 田林县| 永福县| 洱源县| 都江堰市| 麻栗坡县| 茂名市| 青岛市| 扎鲁特旗| 区。| 东兰县| 金寨县| 沙田区| 西华县| 宝清县| 石屏县| 徐州市| 镇安县| 普兰店市| 平安县| 虎林市| 越西县| 南投县| 铁岭市| 平乐县|