亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JVM系統優化實踐(3):分代模型

標簽:
Java JVM

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~


大部分在代码里创建的对象,存活周期都是极短的,只有少数对象是长期存活的,如静态类和静态变量采用不同方式创建和使用对象,其生存周期也不同因此,JVM将堆内存划分为年轻代、老年代两个区域

1、年轻代:将创建和使用完之后马上就要回收的对象放在里面

2、老年代:将创建之后需要长期存在的对象放在里面

https://img1.sycdn.imooc.com//63f768150001012704260242.jpg

 

方法区即永久代(也叫持久代,JDK1.8之后没有永久代了,只有metaspace)。元空间中存放类信息与各类常量数据

大部分正常对象都优先在年轻代分配内存:

https://img1.sycdn.imooc.com//63f768190001b63008050294.jpg

 

就算是垃圾回收也得有触发条件那就是当新生代空间不足时,就会触发一次Minor GC/Young GC

https://img1.sycdn.imooc.com//63f7681e0001111608290440.jpg

 

另外年轻代也不是岁月无限——如果一个年轻代对象,成功地“躲过”了15次垃圾回收,那么它的“年龄”就是15岁了——每“躲过”一次回收,就增加一岁。当“年龄”足够大时,就会被JVM转移到老年代。老年代也一定会进行垃圾回收,只是回收算法和年轻代不同而已:

https://img1.sycdn.imooc.com//63f76825000152ba08400508.jpg

 

JVM相关的一些核心参数:

1、-Xms和-Xmx:Java堆内存大小和其最大值,这对参数通常设置成一样的值;

2、-Xmn:Java堆内存中年轻代大小(老年代的大小就是扣除年轻代后的值);

3、-XX:PermSize和-XX:MaxPermSize :永久代大小和其最大值,一般也设置成一样的值;

4、-XX:MetaspaceSize和-XX:MaxMetaspaceSize(JDK1.8之后取代-XX:PermSize和-XX:MaxPermSize);

5、-Xss:每个线程的栈内存大小。

启动应用时可以设置JVM参数:

本地运行:Debug Configuration -> Arguments -> VM arguments

-Xms512M -Xmx512M -Xmn256M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M

https://img1.sycdn.imooc.com//63f768290001e36808050443.jpg

 

线上部署参考示例

java -jar -Xms512M -Xmx512M -Xmn256M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M app.jar

 

请问贵公司的Tomcat、Spring Boot启动系统时,JVM参数是如何设置的?


感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消