jvm 內存配置

在啓動java程序時創建jvm,操作系統會給jvm分配內存,這塊內存就是jvm的運行時數據區。

運行時數據區通常包括這幾個部分:程序計數器(Program Counter Register)、Java棧(VM Stack)、本地方法棧(Native Method Stack)、方法區(Method Area)、堆(Heap)

經常配置的內存參數主要有如下幾個:

  • Xss:每個線程的stack大小(棧)
  • Xmx:JAVA HEAP的最大值、默認爲物理內存的1/4
  • Xms:JAVA HEAP的初始值,server端最好Xms與Xmx一樣
  • Xmn:JAVA HEAP young區的大小(相當於對-XX:newSize、-XX:MaxnewSize同時設置)
  • XX:PermSize:設定內存的永久保存區域(JDK7)
  • XX:MaxPermSize:設定最大內存的永久保存區域(JDK7)

在JDK1.8中,取消了PermGen,取而代之的是Metaspace,所以PermSize和MaxPermSize參數失效,取而代之的是元空間:

-XX:MetaspaceSize
-XX:MaxMetaspaceSize

本次通過配置不同的參數,使用jmap觀察參數的變化。

1、試驗準備:

         1.1 操作系統:win10,  安裝jdk8

         2.2  製作一個可執行的jar包,本試驗使用spring boot開發了一個web應用 demo.jar。

         3.3 如果安裝了多個版本的jdk,試驗時請確保使用的是同一個版本

2、通過配置不同的內存參數和大小,使用jmap命令觀察內存變化

     2.1 默認內存(啓動不加任何內存參數)

         在命令行窗口執行:  java -jar demo.jar

      新打開命令窗口,執行jmap -heap java進程ID

        

    2.2 設置最大內存 -Xmx

      java -Xmx20m -jar demo.jar

      

2.3  新生代

   java -Xmx20m -Xmn5m -jar demo.jar

2.4  元空間大小

java -Xmx20m -Xmn5m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -jar demo.jar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章