0
点赞
收藏
分享

微信扫一扫

JVM配置

ZSACH 2022-02-18 阅读 86
javatomcat

JVM配置

基础知识

四大内存:全局数据区,全局代码区,栈,堆

静态分配:全局数据区,全局代码区

动态分配:栈,堆
在这里插入图片描述
栈中是存放对象的,对象是由new实例化得到的。在new的过程中产生了数据,数据存放到堆中,故数据有自己的内存地址。

但栈中的对象要和数据一一对应,故对象背后其实是堆中数据的地址引用/内存地址

堆中存放的是对类实例化时产生的数据,存放堆时,是先进入新生代的Eden区。

堆相关

参数说明及默认值:
-Xms 		初始堆大小 	剩余物理内存的1/64
-Xmx 		最大堆大小 	剩余物理内存的1/4
-Xmn 		新生代大小	整个堆的3/8
-Xmx--Xmn 	老年代大小

-Xmn=Eden+S0+S1
默认比例 Eden:S0:S1=8:1:1
JAVA_OPTS后追加-XX:SurvivorRatio=x设置比例来配置Eden,S0,S1

参数总结:
1、jvm内存都是从剩余物理内存借的,tomcat启动成功即jvm配置成功
2、-Xmx和-Xms设置一样
理由:-Xms默认值是剩余物理内存1/64,内存值较小;当大并发流量增大new的数据较多,会出现-Xms内存不够用情况,此时还需临时向物理内存申请借用,借用时会遇到两种情况
情况1:物理内存已无过多空闲内存,即没借到内存,造成java程序new数据无地方存储
情况2:从物理内存借用到内存,但此过程java程序在等待,消耗时间

栈相关

参数说明及默认值:
-XX:PermSize 		初始栈大小 	剩余物理内存的1/64
-XX:MaxPermSize 	最大栈大小 	剩余物理内存的1/4

参数总结:
1、-XX:PermSize和-XX:MaxPermSize设置一样
理由:-XX:PermSize默认值是剩余物理内存1/64,内存值较小;当大并发流量增大,new的数据较多故对象也就多,会出现初始化栈内存不够用,此时需临时向物理内存申请借用,借用时会遇到两种情况
情况1:物理内存已无空闲内存,故没借到内存,造成java对象没空间存储
情况2:从物理内存借用到内存,但此过程java程序在等待,消耗时间

JVM配置步骤

1、tomcat若start则先stop
	A.jps or lsof -i:8080 得到进程pid
	B.kill -9 pid
2、vim tomcat/bin/catalina.sh
3、jvm配置 大概在文件的117行左右添加
	JAVA_OPTS="-server -Xmx425M -Xms425M -Xmn159M -XX:MaxPermSize=128M -XX:PermSize=128M"
4、cd tomcat/bin && sh startup.sh
举报

相关推荐

jvm配置

JVM CMS配置

IDEA配置JVM参数

配置JVM堆栈大小

Kafka推荐jvm配置

0 条评论