JVM: 如何避免出现GC失败

JVM是Java语言可以跨平台、保持高发展的根本,没有了JVM. Java语言将失去运行环,境。针对Java程序的性能优化一定不可能避免针对JVM的调优,随着JVM的不断发展,我们的应对措施也在不断地跟随、变化,内存的使用逐渐变得越来越复杂。所有高级语言都需要垃圾回收机制的保护,所以GC就是这么重要。

JVM标准结构

类的加载机制

一:装载(load)

 由ClassLoader负责加载; (ClassNotFoundException)
复制代码

1 二:链接(Link)

 校验(verify)、准备(Prepare)、初始化静态变量赋默认值;

        (NoClassDefFoundError)
复制代码

1 2 3 三:初始化

 执行静态初始化代码、赋值静态变量。
复制代码

1 ClassLoader

一:BootStrap ClassLoader

       由Sun用C++实现此类,JDK启动时负责加载jre/lib/rt.jar里的所有

       class,及java规范中定义的接口及实现;
复制代码

1 2 3 二:Extension ClassLoader

JVM用于加载扩展功能的jar包,如DNS.jar

       Jdk中的名称:sun.misc.Launcher$ExtClassLoader
复制代码

1 2 3 三:System ClassLoader

       加载启动参数中指定ClassPath的Jar包

       Jdk中的名称: sun.misc.Launcher$AppClassLoader

      一般的程序使用的都是AppClassLoader
复制代码

1 2 3 4 5 四:自定义ClassLoader

       用户也可以自定ClassLoader用于加载其他路径的Jar如网络上加载
复制代码

1 类的执行机制

虽然类已加载成功且静态属性及实例对象皆以创建,但是,执行静态方法或者实例方法时仍需要对JVM字节码进行处理。

JVM有以下三种执行方式:

(1):解释执行

(2):编译执行

(3):反射执行

解释执行

采用经典的冯诺依曼FDX循环方式,即获取下一条指令,解码并分派,然后执行。

解释执行的优点:简单、占资源少、启动速度快

解释执行的缺点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值