JVM内发生的十件事

0、最常用的JVM参数设置:
-Xms: 初始堆大小,JVM 启动的时候,给定堆空间大小。
-Xmx: 最大堆大小,JVM 运行过程中,如果初始堆空间不足的时候,最大可以扩展到多少。
-Xmn:设置年轻代大小。整个堆大小=年轻代大小+年老代大小+持久代大小。持久代一般固定大小为 64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大, Sun 官方推荐配置为整个堆的 3/8。
-Xss:设置每个线程的 Java 栈大小。JDK5.0 以后每个线程 Java 栈大小为 1M,以前每个线程堆栈大小为 256K。根据应用的线程所需内
一、JVM虚拟机:
1.1、类装载子系统
1.2、运行时数据区(内存模型)
1.2.1、堆
1.2.2、栈(线程)FILO
1.2.2.1、栈帧(方法)
1.2.2.1.1、局部变量表
1.2.2.1.2、操作数栈(存放临时的操作数的内存区域)
1.2.2.1.3、动态链接
1.2.2.1.4、方法出口
1.2.3、本地方法栈
1.2.4、方法区(元空间)
1.2.5、程序计数器
1.3、字节码执行引擎
二、GC Root根节点:线程栈的本地变量、静态变量、本地方法栈的变量等等。 向下搜索引用的对象,都标记为非垃圾变量 分代年龄15进入老年代
三、垃圾回收器
1、串行收集器
Serial + Serial Old
2、并行收集器
Parallel Scavenge + Parallel Old
3、并发收集器
ParNew + CMS + Serial Old
CMS
.1 初始标记(STW)
.2 并发标记
.3 并发预清理
.4 重新标记(STW)
.5 并发清理
.6 重置
G1
.1 初始标记
.2 根分区扫描
.3 并发标记
.4 存活数据计算
.5 重新标记
.6 清除
五、类加载的过程:
1、加载:加载对应的二进制文件,并且在方法区创建对应的数据结构
2、连接:
2.1、验证
2.2、准备:给静态变量赋初始值
2.3、解析:符号引用转换为直接引用
3、初始化:给静态属性赋值

六、动态代理和静态代理,
动态代理:字节码在JVM运行时动态生成而非预存在于class文件中
实现InvocationHandler接口

JDK动态代理实现接口
cglib动态代理继承父类
1、CGLib所创建的动态代理对象在实际运行时候的性能要比JDK动态代理高不少,有研究表明,大概要高10倍;
2、但是CGLib在创建对象的时候所花费的时间却比JDK动态代理要多很多,有研究表明,大概有8倍的差距;
3、因此,对于singleton的代理对象或者具有实例池的代理,因为无需频繁的创建代理对象,所以比较适合采用CGLib动态代理,反正,则比较适用JDK动态代理。

七、JVM中的类的加载器主要有三种:启动类加载器,拓展类加载器,应用类加载器。
     启动类加载器(Bootstrap classLoader):又称为引导类加载器,由C++编写,无法通过程序得到。主要负责加载JAVA中的                                                                       一些核心类库,主要是位于<JAVA_HOME>/lib/rt.jar中。

拓展类加载器(Extension classLoader):主要加载JAVA中的一些拓展类,位于<JAVA_HOME>/lib/ext中,是启动类加载器                                                                       的子类。

应用类加载器(System classLoader):    又称为系统类加载器,主要用于加载CLASSPATH路径下我们自己写的类,是拓展类                                                                       加载器的子类。
类加载器的三大特性:委托性、可见性、单一性

八、类初始化的六种情况
当创建某个类的新实例时(如通过new或者反射,克隆,反序列化等)
当调用某个类的静态方法时
当使用某个类或接口的静态字段时
当调用Java API中的某些反射方法时,比如类Class中的方法,或者java.lang.reflect中的类的方法时
当初始化某个子类时
当虚拟机启动某个被标明为启动类的类(即包含main方法的那个类)

九、显式加载和隐式加载
显式
ClassLoader.loadClass(className)
Class.forName(String name,boolean initialize,ClassLoader loader)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值