公开课学习——JVM虚拟机面试核心点与性能优化点

文章目录

jdk的体系结构图

Java语言的跨平台的特性,怎么实现的?

靠我们的Java虚拟机!

jvm内部组成呢?

调优主要是调内存区的。

new出来的对象放堆里,

栈(线程)放局部变量,自己独立使用

在一个线程中,每一个方法都有一个独立的栈帧内存空间。

线程栈里面存放的栈帧就是使用数据结构中的栈(FILO)存放的------和我们方法的嵌套调用的方法相吻合

栈帧内部除了放局部变量(放在局部变量表中)外,还会有其他的

pc是指向下一条指令,为什么需要这个pc呢?------多线程切换

当前线程执行的时候来了条优先级更高的指令,就要进行线程切换,这就是PC的作用。

pc的值怎么变得?

自增?NONONO。是由字节码执行引擎修改的。

动态链接作用------把符号引用转换成直接引用。

方法出口------方法的返回地址

main方法的栈帧有一点点区别,Math()是new出来的,放在堆区,这个堆区的math和我们栈帧中的局部变量表什么关系?

就是把堆中的地址放在栈中。

因为栈中有很多的局部变量,他们放在堆中,把堆中的地址放在栈中。------栈和方法区的关系

方法区(原空间)------常量,静态变量+类信息

new出来的对象还是要放在堆中,把地址放在方法区------方法区和堆之间的关系

粉色的是私有的,黄色的是共享的

垃圾回收机制(gc)使用的算法------可达性分析算法

非垃圾对象会被复制一份放到survivor区

第二次垃圾回收,他们都存活着,那就继续复制

一个对象刚开始放在Edgn中,如果是垃圾就在Edgn中回收,如果继续存活,就放在年轻代中,在年轻代的存活周期就是在S0和s1中挪来挪去,超过15次,年轻代也放满了之后,就放到老年代,进行ygc

老年代如果也放满了就OOM(内存溢出)

调优工具------Arthas

下载这个arthas-boot.jar包

功能强大,能直接定位到死锁的代码位置,也可以在生产环境中直接修改变量的值,直接查看代码......

STW------stop the world停掉用户线程(gc的时候会发生)

gc一定程度对网站性能有影响------是因为STW------所以调优的根本目的是减少STW的发生

为什么会设计STW机制?可以不要吗?

蚂蚁金服一面,如果没有他,假如在gc执行的时候,没有STW,这时候一个用户线程执行结束了,那些原本是非垃圾的对象就变成了垃圾对象,就把gc整懵逼了。

所以有了STW,gc执行的时候,用户线程不会执行,对象是不是垃圾就确定了。

案例




14s就放满了,假如在13s有线程在minor gc的时候没结束,依旧存活,那要放在S0,但不一定放在S0,有可能放在老年代。

大对象会直接放在老年代

假设每一次minor gc都有60M放进去,一会就满了,发生full gc

但这些一会就要成垃圾了,不应该放在老年代(老年代主要放长久存活的那些)。

那有没有办法解决这个问题呢?

当然可以,比如把年轻代调大,调整一下内存区的比例,在并发压力不是特别大的情况下,老年代很久很久才会发生full gc

单机几十万并发的系统JVM如何优化

kafka, rocketmq都可以抗住每秒10万的并发的。

如果使用这些一定要优化JVM的。

这里如何调优------借助垃圾收集器

后面广告太多,没在听啦

相关推荐
liang_jy8 小时前
内存管理(二)—— 覆盖与交换
面试·操作系统
触底反弹9 小时前
Vibe Coding 不写 Git,等于悬崖边飙车
人工智能·git·面试
liang_jy9 小时前
内存管理(一)—— 内存管理的概念
面试·操作系统
叩码以求索11 小时前
浅谈:算法萌新如何高效刷题应对面试(一)
算法·面试·职场和发展
kirs_ur11 小时前
CXL(Compute Express Link)— 内存扩展的未来
服务器·数据库·性能优化
孫治AllenSun11 小时前
【DataX】生产环境搭建DataX集群案例
java·开发语言·jvm
丈剑走天涯12 小时前
JVM(十) JDK8 CMS (Concurrent Mark Sweep)
jvm
Ashley的成长之路13 小时前
前端性能优化实战手册·第2篇:资源加载策略全解
前端·性能优化·资源加载·http/3·性能优化实战·资源加载优化
wdfk_prog14 小时前
嵌入式面试真题第 13 题:单硬件 Timer 下的高精度多路软件定时器架构设计
c语言·开发语言·面试·职场和发展·嵌入式
qq_2975746715 小时前
RuoYi框架二次开发系列(五)性能优化、Redis缓存实战、分布式部署、接口限流与安全加固生产方案
redis·缓存·性能优化