2.2jvm类加载

1.jvm类加载时机

1.遇到new,getstatic,putstatic或者invokestatic这字节码指令时,会先触发初始化
  1. new new实例化对象
  2. getstatic 读取一个类的静态字段(使用static final修饰的除外)
  3. setstatic 设置一个类的静态字段(使用static final修饰的除外)
  4. invokestatic 调用一个类的静态方法
2.当初始化一个类的时候,如果其父类没有进行初始化,则会触发其父类的初始化
3.第一个要执行的主类(包含main方法的类)
4.使用java.lang.reflect 方法对类进行反射调用的时候,

1.1不会初始化的例子

  1. 通过子类引用父类的静态字段
  2. 通过数组定义来的引用类
  3. 调用类的常量(使用static final修饰)

2.内存分配策略

  1. 优先分配到eden区域
  2. 大对象(超出eden最大内存)直接分配到老年区
  3. 长期存活的对象分配到老年代
  4. 空间间分配担保(当eden内存空间不足时,会向老年代借空间)
  5. 动态对象年龄判断(每经历一次gc垃圾回收,年龄+1)

jvm自带调优

  1. jps java process status (查看java运行的基本参数)
  2. jstat查看类装载,内存,垃圾收集,jit编译的信息
  3. jinfo 实时查看和调整jvm的各项参数
  4. jstack查看线程的各项参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值