jvm听课随记01
1、 JVM架构图
2、类加载器
下边第一个得到是 c++语言写的(启动类加载器 Bootstrap)
第二个得到的是扩展类加载器(Extension )
第三个是应用程序类加载器 也叫系统类加载器
这里需要掌握小维度的点
2.1 有哪几种类加载器 3种类加载器
2.2 双亲委派 我爸是李刚 有事找我爹 俗称往上捅 也就是先从根加载找的到直接用 找不到再从扩展加载器 扩展里边找的到直接用 找不到就再往下找 一直到你自己的 如果自己也找不到 就报类没有找的异常
2.3 沙箱安全制 以上这么做的理由 往上捅 理由是沙箱安全机制
3、Native
场景
当我们线程strat 就是立刻启动线程吗 答案不是的 他是新建完成到就绪状态 他得调用底层c++的方法才能启动 也就是说start不一定是启动线程 那么什么时候启动 待cpu和操作系统调度
3.1 Native是关键字
3.2 声明有,实现无 why 因为凡是Native的方法 代表java的势力范围 接下来他的实现是靠的C语言(也就是第三方函数库)
接下来由于Native方法的装载和运行在一个叫栈里边 这时候我们衍生出一个栈叫 Native Method Stack 普通放在在栈里边 标志着Native方法走另外一条绿色通道
4、pc寄存器
4.1 记录了方法之间的调用和执行情况,类似于排班值日表;他就是一个指针;他只是记录一个内存地址;我们说了pc寄存器是一个硬件 他在哪 他是在CPU里边的 他用来存储指向下一条指令的地址,也就是将要执行的指令代码 他是当前线程所执行的字节码行号指示器