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类随着它的类加载器一起具备了一种带有优先级的层次关系。
  • 相关阅读:
    ocos 信号量
    C 语言 输入字符串 并计算输入的字符的长度
    C 语言简历一个文件夹 并自己输入字符 来取文件夹名字
    C语言 创建一个 txt 文件 bin输入字符 保存文件在工作文件夹里
    C语言 之 printf () 函数你真的会用吗?
    Impala的命令COMPUTE STATS
    python 函数eval
    YouTube排名第一的励志英文演讲《Dream(梦想)》
    impala 表迁移方式 partquet数据文件移动方法
    Python中@staticmethod和@classmethod的作用和区别
  • 原文地址:https://www.cnblogs.com/jj81/p/11203174.html
Copyright © 2011-2022 走看看