JVM整体结构深度解析
JVM内存模型
image-20230225234803065
fbad0ab70d80cd753d625ef615f94d2
类加载器子系统负责从文件系统或者网络中加载Class文件到我们的JVM的内存中去,class文件在文件开头有特定的文件标识。加载的类信息存放于方法区。
字节码执行引擎是具体执行我们代码的。
本地方法栈在执行native方法时候会在本地方法栈中创建内存。
创建对象具体存放在堆中,局部变量表中只是保存着堆的引用。
方法区存放方法,类元信息,静态变量。
每个线程都会分配一个线程栈。
线程栈对应一个自己的程序计数器,程序计数器是由字节码执行引擎每次执行一行代码都会修改程序计数器。
在线程中执行方法,会创建方法自己的栈帧,遵循先进后出。
方法出口保留上一个方法的执行代码行数,当方法执行完成,栈帧释放,通过方法出口回到上一个方法,继续执行。 main方法执行在JVM的操作流程public static void main(String[] args) { Test test = new Test(); test.calculate(); } public void calculate() { int a = 5; int b = 10; int c = a + b; }
image-20230226093117700
1:首先将java编译成class文件。
2:类加载子系统将class文件加载到JVM虚拟机中。
3:字节码执行引擎执行代码。
4:在栈中创建线程,开始准备执行main方法。
5:在main线程栈中创建main方法的栈帧,栈帧是独立的,栈帧中的局部变量表也是独立的,当方法执行结束自动释放栈帧。
6:开始new对象。
先在栈帧中局部变量表中开辟一个内存空间
在堆中开辟内存空间
在堆中创建实例
堆中的实例指向栈帧中新开辟的内存,进行关联
7:执行方法。由于calculate方法不是静态方法,所以应该先将符号引用转变为新new出来对象的直接引用,动态解析。并且把main栈正的代码行数记录到calculate的方法出口里,当方法执行结束,就继续执行main方法。
8:在main线程栈中创建栈帧calculate。
9:执行 int a = 5,在calculate栈帧的局部变量表中开辟a的内存空间
10:将5压入操作树栈中。
11:将5从操作树栈中移除并赋值给局部变量表中的a
12:int b同理
13:执行加操作,将a的值加载到操作数栈,将b的值加载到操作数栈
14:将操作数栈的值拿到cpu中进行加操作,执行完成放回操作数栈
15:将操作数栈的值移除并赋值给局部变量表中的c
16:执行方法出口,calculate栈帧释放
17:main方法栈帧执行完成,释放
18:main线程结束
从JDK源码级别剖析JVM类加载机制
JVM内存参数设置
java ‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐jar microservice‐eureka‐server.jar
-XX:MaxMetaspaceSize :设置元空间的最大值,默认-1,不受到限制,只限制于我们内存大小
‐XX:MetaspaceSize :元空间触发FULL GC的阈值,默认21M,当达到阈值的时候,触发FULL GC,同时收集器会对该值进行调整: 如果释放了大量的空间, 就适当降低该值; 如果释放了很少的空间,那么在不超
过该值情况下,适当提高该值,如果我们在启动项目的时候一卡一卡的,可能存在元空间full gc,适当调大元空间大小。
image-20230226100513013
安排司机开公司光茅台就收了74箱!这个一把手靠水吃水终落水李钦振翁宏业中国纪检监察报单国平,1966年2月出生,1989年1月加入中国共产党,1991年7月参加工作,曾任原南京市自来水总公司供水分公司副经理管线管理所主任,原南京市自来水总
自热锅里的神奇大米有什么来头?营养健康吗?提到自热锅,就会想到,什么红烧牛肉黄焖鸡块梅菜扣肉卤肉饭鱼香肉丝广式川式腊肠等等。此刻,只有一个想法想吃可是,大家有没有过这样的一个疑问,平时咱在家蒸米饭,用压力锅那都得蒸上个半小
这牛肉10分钟一锅端,连吃一周都不腻!好吃省事还下饭,赶紧学刚开工没多久,都是最忙的时候,每次下班回家都想吃点热乎的好吃的,但是又不能每次都炖什么汤,费时又费力。有一种食材就是大家最喜欢的,那就是肥牛,肥牛虽然是冷冻的,但是只要买到好的肉,
最适合春天吃的几道菜,好吃有味道白灼西兰花用料西兰花2朵宴友食用油1勺食盐适量蒸鱼豉油适量做法1西兰花买回来之后,要用大量的盐水浸泡半小时以上。因为西兰花是农药非常浓烈的蔬菜,加上表面凹凸,更容易有农药残留,一定
重庆踏青赏花春意浓梅花竞相绽放引游人一女士身着古装与梅花合影。陈超摄红酒小镇大面积的梅花竞相绽放。陈超摄市民乘坐索道观光游玩。陈超摄一女士正在拍摄梅花。陈超摄民众乘坐观光小火车观赏梅花。陈超摄民众乘坐观光小火车观赏梅
玩转烟台快来打卡!烟台这些2月必看免费展览,带你玩转艺术之旅!暖冬和看展永远是最佳绝配!新的一年怎么能只沉迷工作?偶尔也要在艺术的缓冲区享受一下!烟台诸多精彩大展正在呈现,这些2月必看免费展览千万不要错过!快来一场说走就走的艺术之旅吧街巷是城
一年狂揽200亿,黄山市徽菜产业如何烹出皖美味道?爱上徽菜是因为其新鲜的食材和丰富的口感,诚邀大家来民宿做客,尝尝外国人做的地道徽菜。黄山民宿阿琳娜花园的主理人黄琼和阿明是一对跨国夫妻,在日前举行的第二届中国(黄山)徽菜美食嘉年华
微山县,一座湖畔小城前阵子老胡来了济宁,对济宁不吝赞美,更是点赞了我的家乡,微山湖。微山县是我的家乡,这是坐落于微山湖畔的小县城,古运河穿行在县城之中,为这座小城带来悠久的沉淀,微山也被称为中国荷都北
爱了!雨雾中的阳山好雨知时节,当春乃发生。立春过后,阳山迎来绵绵细雨。漫步雨中的阳山,就像是走进了画里。梁文讯摄雨中的阳山城,恍若仙境。放眼望去,逐渐升起的云雾慢慢沿着山坡爬升此时的美景,如腾云驾雾
渐淡的节日气氛里,感受大连冬去春来的美立春后的大连,冬日的寒冷并未散尽,春天的气息似有还无,在气温大幅下降后,寒风带走了烟尘和云彩,留下了湛蓝清澈的天空。冬春交汇时节的大连人民广场喷泉午休期间,一如往常走在人民广场上,
秋天第1次自驾游不考虑一下哈弗H9?秋天第1次自驾游不考虑一下哈弗H9?前几天立秋时,秋天的第1杯奶茶火速刷屏全网,一时间大家都在社交平台晒续命快乐水,声称在高温蒸煮的天气中感受到了丝丝凉意。不过有意思的是,山东的小