日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础——JVM内存结构

發布時間:2025/3/21 java 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础——JVM内存结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  推薦閱讀:https://www.cnblogs.com/wangjzh/p/5258254.html

一、內存結構圖

  

  先導知識:

  一個 Java 源程序文件,會被編譯為字節碼文件(以 class 為擴展名),每個java程序都需要運行在自己的JVM上,然后告知 JVM 程序的運行入口,再被 JVM 通過字節碼解釋器加載運行。

  程序計數器

    保存著當前線程執行的虛擬機字節碼指令的內存地址,可以看作是當前線程所執行的字節碼的行號指示器。使得保證線程切換回來后,還能恢復到原先狀態。(本地native豐富則計數器為空)

  虛擬機棧(JVM棧)  

    每創建一個線程時就會對應創建一個Java棧,所以Java棧也是"線程私有"的內存區域,這個棧中又會對應包含多個棧幀,每調用一個方法時就會往棧中創建并壓入一個棧幀,棧幀是用來存儲方法數據和部分過程結果(局部變量表、操作數棧、動態鏈接、方法出口等信息的數據結構,每一個方法從調用到最終返回結果的過程,就對應一個棧幀從入棧到出棧的過程。

    我們平時說的堆棧堆棧,棧就是指代的這個JVM棧,堆在下文講解。

  本地方法棧

    與虛擬機棧類似,為本地方法服務

  方法區

    用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據

    方法區中還存在著常量池,常量池包含著一些常量和符號引用(加載類的連接階段中的解析過程會將符號引用轉換為直接引用)。

  

    堆(heap)是存儲java實例或者對象的地方,是GC的主要區域,同樣是線程共享的內存區域。(進一步可以細分為新生代和老年代

  垃圾回收機制,參考:https://www.cnblogs.com/andy-zcx/p/5522836.html

二、控制參數

?

-Xms:設置堆的最小空間大小。(初始化大小)

-Xmx:設置堆的最大空間大小。

-XX:NewSize:設置新生代最小空間大小。

-XX:MaxNewSize:設置新生代最大空間大小。

-XX:PermSize:設置永久代最小空間大小。

-XX:MaxPermSize:設置永久代最大空間大小。

-Xss:設置每個線程的堆棧大小。

?   完整參數信息:https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

   參數的設置方式:http://blog.csdn.net/huanhuan_tiantian/article/details/8212885

?

java -Xms100m -Xmx384m Main中的 -Xms100m -Xmx384m即是指定你應用程序運行時,jvm的堆內存情況

?

?

?

  Web項目中Tomcat的JVM參數配置:https://www.cnblogs.com/bluestorm/archive/2013/04/23/3037392.html

轉載于:https://www.cnblogs.com/jiangbei/p/7813748.html

總結

以上是生活随笔為你收集整理的Java基础——JVM内存结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。