Java虚拟机是一种抽象的计算机,只知道class文件格式,
JVM屏蔽操作系统,一次编译到处运行
类加载机制是指我们将类的字节码文件所包含的数据读入内存,同时我们会生成数据的访问入口的一种
JVM类加载机制的三种特性
全盘负责,当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由
该类加载器负责载入,除非显示使用另外一个类加载器来载入
父类委托,“双亲委派”是指子类加载器如果没有加载过该目标类,就先委托父类加载器加载该
目标类,只有在父类加载器找不到字节码文件的情况下才从自己的类路径中查找并装载目标类。
父类委托只是Java推荐的机制,并不是强制的机制
缓存机制,缓存机制将会保证所有加载过的Class都将在内存中缓存,当程序中需要使用某个
Class时,类加载器先从内存的缓存区寻找该Class,只有缓存区不存在,系统才会读取该类对应
的二进制数据,并将其转换成Class对象,存入缓存区。
JVM的设计实际上遵循了遵循冯诺依曼计算机结构
new String() 创建了两个对象:一个在字符串常量池中(如果字符串常量池中还没有 "yzt"),另一个在堆中
方法区是各个线程共享的内存区域,在虚拟机启动时创建
一个Java对象在内存中包括3个部分:对象头、实例数据和对齐填充