栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

JVM基础

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM基础

JVM基础

文章目录
  • JVM基础
    • JVM探究
    • jvm所处位置
    • jvm体系结构
    • 类加载器及双亲委派机制
    • 虚拟机
    • JVM的位置
    • JVM整体结构
    • JVM的生命周期
    • SUN Classic VM
    • Exact VM
    • HotSpot VM
    • 内存结构概述
    • 类加载器和类的加载过程
    • 类的加载过程
      • 链接
    • 初始化
    • 类加载器的分类
    • 类加载器的使用
    • 使用自定义类加载器的原因
    • ClassLoader的常用方法
    • 双亲委派机制原理
    • 沙箱安全机制
    • 类的主动使用和被动使用
    • 运行时数据区概述及线程
    • JVM中的线程
    • PC寄存器
    • PC寄存器使用案例
    • PC寄存器常见的面试题
    • 虚拟机栈

视频地址:
尚硅谷

看到第45集

JVM探究

jvm所处位置


jvm体系结构



类加载器及双亲委派机制

虚拟机


JVM的位置

JVM整体结构


JVM的生命周期


SUN Classic VM

Exact VM

HotSpot VM

内存结构概述



类加载器和类的加载过程

类的加载过程


链接


注意:静态变量术语类的变量

初始化

类加载器的分类



注意:java的核心类库都是由引导类加载器来完成的

public class Test1 {
    private int a=3;

    public static void main(String[] args) {
        //获取系统类加载器
        ClassLoader systemCloader=ClassLoader.getSystemClassLoader();
        System.out.println("系统类加载器:"+systemCloader); // sun.misc.Launcher$AppClassLoader@b4aac2
        //获取扩展类加载器
        ClassLoader extClassLoader=systemCloader.getParent();
        System.out.println("扩展类加载器:"+extClassLoader); // sun.misc.Launcher$ExtClassLoader@140e19d
        //尝试获取引导类加载器
        System.out.println("启动类加载器:"+extClassLoader.getParent()); //null
        //获取当前自定义类加载器
        System.out.println("自定义类加载器"+Test1.class.getClassLoader());  // sun.misc.Launcher$AppClassLoader@b4aac2
        //获取String类加载器  获取为null  说明String类由 引导类加载器 加载
        System.out.println("String类加载器:"+String.class.getClassLoader()); // null
    }
}

类加载器的使用



  // 获取引导类加载器可以加载 哪些路径下的文件
        URL[] urls= Launcher.getBootstrapClassPath().getURLs();
        System.out.println("*****************************************");
        System.out.println("获取引导类加载器可以加载 哪些路径下的文件");
        for (URL url:urls){
            System.out.println(url);
        }

引导类加载器可以加载的文件路径:

扩展类加载器可以加载的文件路径

 System.out.println("*****************************************");
        System.out.println("获取扩展类加载器可以加载 哪些路径下的文件");
        String extString=System.getProperty("java.ext.dirs");
        for(String str:extString.split(",")){
            System.out.println(str);
        }



注意:引导类加载器无法直接获取,因为它是由C和C++ 编写的。

使用自定义类加载器的原因


ClassLoader的常用方法


双亲委派机制原理


双亲委派机制的优势

沙箱安全机制

类的主动使用和被动使用



运行时数据区概述及线程


JVM中的线程


PC寄存器




PC寄存器使用案例

进入编译后的class文件的目录,使用命令:


PC寄存器常见的面试题


PC寄存器为什么要被设置成线程私有

虚拟机栈

java虚拟机栈是什么




设置栈内存的大小



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613496.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号