zoukankan      html  css  js  c++  java
  • Jvm | 《深入理解Java虚拟机》读书笔记 | 虚拟机类加载机制

    Java虚拟机的作用?

    解释运行字节码程序消除平台相关性。    
    jvm将java字节码解释为具体平台的具体指令。一般的高级语言如要在不同的平台上运行,至少需要编译成不同的目标代码。而引入JVM后,Java语言在不同平台上运行时不需要重新编译。
    Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。 链接:https:
    //www.nowcoder.com/questionTerminal/057e91ba0d14402c93a7262ef68b5892

    内存分配策略?(书 - 91)

    Java体系提倡自动内存管理最终归结于自动化解决内存分配问题,其中几条最普遍的内存分配规则是遵循对象优先在新生代分配,大对象直接进入老年代,长期存活的对象进入老年代。

      什么是大对象?

    需要大量连续内存空间的Java对象,典型的是很长的字符串以及数组

      如何理解长期存活的对象?

    如果对象在Eden出生并经过第一Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到survivor空间中,并且对象年龄设为1。对象在survivor区中每“熬过“一次minor GC,年龄就增加1,当它的年龄增加到一定程度(默认为15岁),就将会被晋升到老年代。
    对象晋升老年代的年龄阈值可以通过参数设置。

    类的生命周期

    加载->验证->准备->解析->初始化->使用->卸载

    类加载的过程(p214)

    类加载时机(书-210)

    Java虚拟机规范中并没有进行强制约束,这点可以交给虚拟机的具体实现来自由把握。

    对初始化阶段了解?(书-210~211)

    - - 虚拟机规范严格规定有且只有5种情况必须立即对类进行“初始化”
        - 遇到new 、getstatic 、putstatic、 invokestatic这4条字节码指令时(实例化对象,读取和设置类的静态字段、调用类的静态方法),如果类没有进行初始化,则需要先触发其初始化
        - 使用java.lang.reflect包的方法对类进行反射调用时候,如果类没有进行过初始化,则需要先触发其初始化
        - 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化
        - 当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类
        - 使用jdk1.7的动态语言支持时,…

    描述一下类加载器及其在Java程序中的作用(与类的关系)(p228)?

    类加载器用于实现类的加载动作。
    
    对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性。比较两个类是否“相等”(class对象的equal()方法、isAssignableForm()方法、isInstance()防方法),
    只有在这两个类是由一个类加载器加载的前提下才有意义,否则,即使两个类来源同一个class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。

    双亲委派模型的工作过程?(p231)

    - 如果一个类加载器收到类加载的请求,它首先不会去尝试加载这个类,而是把这个类请求委派给父类加载器去完成,每一层次的类加载器都是如此,因此所有的加载器请求最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个请求时,子加载器才会尝试自己去加载。
    - 好处是java类随着它的类加载器一起具备了一种带有优先级的层次关系。
  • 相关阅读:
    POJ 3268 Silver Cow Party (Dijkstra)
    怒学三算法 POJ 2387 Til the Cows Come Home (Bellman_Ford || Dijkstra || SPFA)
    CF Amr and Music (贪心)
    CF Amr and Pins (数学)
    POJ 3253 Fence Repair (贪心)
    POJ 3069 Saruman's Army(贪心)
    POJ 3617 Best Cow Line (贪心)
    CF Anya and Ghosts (贪心)
    CF Fox And Names (拓扑排序)
    mysql8.0的新特性
  • 原文地址:https://www.cnblogs.com/jj81/p/11203174.html
Copyright © 2011-2022 走看看