JVM-类的加载机制

JVM-类的加载机制(从磁盘加载class文件到内存中,解析并执行class文件、产生对象)

Native 通过加载本地方法调用JNI接口调用;主要用来拓展JAVA的使用

类的加载依赖加载器来完成加载

  • BootStrap加载器>extends加载器>启动类加载器(非继承关系)
  • BootStrap:只加载java文件下lib的核心库、只负责加载java、javax、sun开头的包中的类
  • extends:只加载jre文件夹下ext文件下的包
  • System加载器:加载ClassPath路径下的java文件、通常是用户自己定义的类
  • 类的加载原则:缓存原则、双亲委派原则、全盘原则
  • 缓存原则:每加载一个类就会缓存该类的信息、当需要再次使用的时候、会直接判断这个类是否已经被加载;
  • 双亲委派原则:当接收到类的加载任务、会先将这个类委托给上级加载器加载,一直往上查找,如果上级不能加载的时候,则会返回,由自己加载;
  • 全盘原则:一个类如果被一个加载器加载了,那么这个类中出现的其它类也会被这个加载器直接加载。
  • JVM内部运行结构
  • 由类加载器将class文件从硬盘加载到内存中、
  • 在运行过程中产生的数据、分为线程共享区和线程私有区、
  • 线程共有区 主要是堆和方法区、方法去里面存储的是class结构信息、堆里面存储的运行过程中产生的对象;
  • 线程私有区:主要是有程序计数器、线程栈、本地方法栈等
  • 线程会在每次调用方法的时候产生栈帧(栈帧里面有局部变量、动态链接等操作)
  • 执行引擎用来负责执行整个程序、从方法里面取出字节码文件来进行执行、从而产生对象、
  • 执行引擎里还包括了gc、gc主要在堆和方法去进行垃圾回收
  • JVM调优-JConsole和Java VisualVM
    减少GC的频率和Full GC的次数

  • GC垃圾回收算法:复制算法、标记清除、标记压缩

  • 复制算法:优点没有内存碎片;但是浪费内存空间,有一半是TO 用来交换复制
  • 标记清除:会出现2次扫描浪费时间、存在内存碎片、但是节省了内存空间(第一次扫描标记被引用对象、第二次进行清除)
  • 标记压缩:防止内存碎片,再次扫描
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值