java 基础知识

JVM的故障分:OOM, 加密机类引发的OOM,   gjson 引发的OOM

双亲委派机制, AppClassLoader   ExtClassLoader  BootStrapClassLoader  应用类加载器   扩展类加载器  引导类加载器
打破双亲委派机制


类的加载过程: 
    加载:加载class字节码
    验证:验证字节码的语义
    准备:给静态变量分配内存空间,并赋初值
    解析:将符号引用替换为直接引用,主要是静态链接
    初始化:为静态变量和静态方法执行初始化工作
new的过程:类加载  --> 检测是否加载类  --> 分配内存空间 -->初始化,并赋予零值  --> 设置对象头(分代年龄,锁) --> 执行init(赋值,执行构造器)    
对象在内存中存储的布局可以分为3块区域:对象头(Header)、 实例数据(Instance Data)和对齐填充(Padding)。 HotSpot虚拟机的对象头包括两部分信息,
第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。
对象头的另外一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例
    
java的集合: ArrayList LinkedList HashMap ConcurrentHashMap
反射:Class;
JVM: 运行时数据区,类加载子系统,本地方法,执行引擎
运行时数据区: 
    堆:各类对象,字符串池,整形池 
    JVM栈:局部变量表,操作数栈,动态链接,方法出口
    本地方法栈:
    方法区(原空间) 静态变量,类元信息,常量
    程序计数器:

IO: 顺序IO和随机IO
内存分配:指针碰撞,空闲列表
解决内存分配的并发问题: 
        cas 原子操作加重试机制, 
        TLAB 内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在Java堆中预先分配一小块内存;

大对象直接进入老年代
逃逸分析,对象可以直接在站上分配
老年代分配担保机制

判断对象已经死亡: 引用计数法,可达性分析算法GC-root
        
垃圾回收算法:引用计数算法,复制算法,标记清楚,标记整理
年轻代使用复制算法,是因为复制算法比标记算法快10多倍,然后年轻代通常99%的对象是可以回收的,仅仅很少的对象需要复制,效率更高
标记算法,使用标记回收的对象比较少的场景;

垃圾回收器:Serial serial old     stop the word
            parNew  CMS
            parallel Scavenge  parallel old    多线程GC,很好的利用了CPU,提高了吞吐量
            G1  zGC
            
            CMS是一款多线程垃圾回收器,
                初始化标记 并发标记 重新标记 并发清楚  并发重置
初始标记:暂停所有的其他线程(STW),并记录下gc roots直接能引用的对象,速度很快。
并发标记:并发标记阶段就是从GC Roots的直接关联对象开始遍历整个对象图的过程, 这个过程耗时较长但是不需要停顿用户线程,可以与垃圾收集线程一起并发运行。因为用户程序继续运行,可能会有导致已经标记过的对象状态发生改变。
重新标记:新标记阶段就是为了修正并发标记期间因为用户程序继续运行而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短。主要用到三色标记里的增量更新算法(见下面详解)做重新标记。
并发清理: 开启用户线程,同时GC线程开始对未标记的区域做清扫。
并发重置:重置本次GC过程中的标记数据
            
jps
jmap :  查看内存信息和实例个数和占用内存情况
jmap -histo pid > a.txt
jmap -head
jstack: 查看线程情况
top -p pid

八种基本类型的包装类和对象池
java中基本类型的包装类的大部分都实现了常量池技术(严格来说应该叫对象池,在堆上),这些类是
Byte,Short,Integer,Long,Character,Boolean,另外两种浮点数类型的包装类则没有实现。另外
Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值小于等于127时才可使用对象池,也即对象不负
责创建和管理大于127的这些类的对象

JMM 是一种规范,分为工作内存和共享内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十二月的雪7

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值