Java技术栈

JVM

JVM虚拟机: 由类装载子系统, 运行时数据区(jvm内存模型), 执行引擎三部分组成.

java程序运行时,类字节码文件.class首先由类装载子系统加载到运行时数据区,在通过执行引擎来执行运行时数据区中的字节码.

运行时数据区(java内存模型): 堆, 栈(线程), 本地方法栈, 方法区(原数据),程序计数器组成.

线程私有(每个线程都有一个): 栈, 本地方法栈, 程序技术器

线程共有(所有线程共享): 堆, 方法区

: 局部变量表, 操作数栈, 动态链接, 方法出口组成.

局部变量表:存放类中的局部变量的区域.

操作数栈:执行临时运算的区域

动态链接:存放方法的内存地址

方法出口:方法执行完之后的出口,下一个方法的入口

程序计数器: 代码运行位置的行号(javap 命令编译后可以看到编译后的代码行号)

堆:

年轻代: 默认占堆内存的1/3, 由1有个Eden区两个Survivor区(1:1:8)

老年代: 默认占堆内存的2/3

垃圾回收: 主要指的堆内存中的垃圾回收

1:可达性分析算法:将"GC Roots"对象作为起点,从这些节点开始向下搜索引用的对象,将找到的对象标记为非垃圾对象,其余未标记的对象都是垃圾对象.

GC Roots根节点: 线程栈的本地变量,静态变量,本地方法栈中的变量等等.

年轻代的垃圾回收是minor GC,由字节码执行引擎开启垃圾收集线程来进行垃圾回收.

Eden区满了之后发生minor GC,先将年轻代中存活的对象复制到一个survivor区,然后将Eden区和另一个Survivor区中的所有对象清空,同时将存活的对象年龄+1,当存活的对象年龄超过15(默认,可设置)后,将其移入到老年代中.

老年代的垃圾回收是full GC.如果full GC之后,内存仍然不够用,则会发生OOM.

JVM调优:目的是减少full GC的次数,或者减少full GC的时长.因为full GC的时候会发生STW.

STW: stop the world,是指发生full GC的时候,JVM会将用户线程冻结的一种现象.

STW:stop the world :GC的时候(yong GC 和 full GC)会停掉用户线程(用户发起的线程),目的是为了快速完成GC,因为用户线程如果继续执行, 那么对于这些线程中的数据可能一会是垃圾对象,一会又会重新生成(过程垃圾现象),会造成干扰(GC又需重新排查所有对象)

调优:根据系统业务每秒产生的对象个数及大小,评估年轻代和老年代内存分配比例,使朝生夕死的对象的GC发生在年轻代,防止老年代放入太多朝生夕死的对象而造成full GC.

Arthas: 1: disbord :大盘查看线程信息(),堆内信息,

2: thread ID : 查看线程对应的问题,能对应到具体代码

3: thread -b : 查看阻塞的线程信息.能对应到具体代码

Java基础:

2021JAVA面试题附答案(持续更新版)-CSDN博客

为了面个好公司!拼了!3.5W字的Java面试题整理(答案+学习路线)上!-CSDN博客

破4!《我想进大厂》之Java基础夺命连环16问-CSDN博客

https://zhuanlan.zhihu.com/p/351761423

Kafak:

《我想进大厂》之kafka夺命连环11问-CSDN博客

kafka如何保证不重复消费又不丢失数据_Kafka写入的数据如何保证不丢失?-CSDN博客

如何保证kafka消息不丢失_kafka会丢消息吗-CSDN博客

MQ:

《我想进大厂》之MQ夺命连环11问-CSDN博客

ZooKeeper:

https://www.cnblogs.com/bigband/p/13574344.html

zookeeper中的选举机制_zk 选举时 可以对外提供服务吗-CSDN博客

Mysql:

《我要进大厂》之mysql夺命连环13问_mysql 可重复复读 写时加排他-CSDN博客

MySQL索引连环18问!-CSDN博客

MySQL面试题全集-CSDN博客

Redis:

《我想进大厂》之Redis夺命连环11问-CSDN博客

Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单-CSDN博客

JVM:

《我想进大厂》之JVM夺命连环10问-CSDN博客

多线程:

50个多线程面试题,你会多少?(一)_java多线程深度面试题-CSDN博客

Spring:

《我想进大厂》之Spring夺命连环10问_spring 夺命10连问-CSDN博客

微服务:

SpringCloudAlibaba常用组件_springcloudalibaba组件-CSDN博客

设计模式:

面试 设计题_设计模式面试题及答案 - 全栈程序员必看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值