摘要: 类加载案例 tomcat类加载器架构 它需要满足以下功能: 部署在同一个Web容器上的两个Web应用程序所使用的Java类库可以实现相互隔离。这是最基本的需求,两个不同的应用程序可能会依赖同一个第三方类库的不同版本,不能要求一个类库在一个服务器中只有一份,服务器应当保证两个应用程序的类库可以互相独立 阅读全文
posted @ 2021-01-21 21:34 王者之剑KO 阅读(124) 评论(0) 推荐(1)
摘要: 再次复习,jvm的组成三大部分 内存模型+类加载系统+字节码执行引擎 jvm是以方法作为最基本的执行单元,所以当我们讨论字节码执行引擎的时候,我们讨论的是方法具体如何执行。 运行时栈帧结构 定义: 栈:每个线程都有自己独有的一个空间放自己的局部变量 栈帧:每个线程会为自己的每个方法分配一块对应的内存 阅读全文
posted @ 2021-01-21 21:33 王者之剑KO 阅读(113) 评论(0) 推荐(0)
摘要: 类加载 考点 类的加载的生命周期有哪些? 加载过程具体流程?加载触发的时机? 加载过程的Class对象是否唯一还是随创建方法数量而定? 连接过程具体流程?连接触发的时机? 类的静态变量赋值经历的过程? 类的初始化具体流程?初始化触发的时机(何为主动加载/被动加载)? <clinit>方法怎样才会导致 阅读全文
posted @ 2021-01-21 21:30 王者之剑KO 阅读(111) 评论(0) 推荐(0)
摘要: 垃圾收集器的分类 为什么会分新生代和老年代回收器的区别? 因为新生代GC触发次数多,垃圾对象回收多,所以要把内存整齐度和效率优先。而老年代内存空间大,垃圾对象少。如果再使用复制算法,需要浪费很多空间。 整堆垃圾收集器 语言描述如下: 串行(Serial)回收器是单线程的一个回收器,简单、易实现、效率 阅读全文
posted @ 2021-01-21 21:29 王者之剑KO 阅读(89) 评论(0) 推荐(0)
摘要: 这里所提到的到都是GC涉及到的一些概念,具体不同的收集器由于内存结构不同,并发串行不同,实现上不止下面这些东西 STW GC中Stop the world 即在执行垃圾收集算法时,Java应用程序的其他所有除了垃圾收集收集器线程之外的线程都被挂起。此时,系统只能允许GC线程进行运行,其他线程则会全部 阅读全文
posted @ 2021-01-21 21:28 王者之剑KO 阅读(1744) 评论(0) 推荐(0)
摘要: 垃圾收集的核心目标(重点) 这三个问题肯定要会答 哪些内存需要回收 什么时候回收 如何回收 哪些内存需要回收(重点) 程序计数器,虚拟机栈,本地方法栈随线程而生,随线程而灭不需要过多考虑内存回收 Java堆和方法区作为共享区域具有显著的不确定性,其对象的分配和回收都是动态产生的。 什么时候回收(重点 阅读全文
posted @ 2021-01-21 21:27 王者之剑KO 阅读(154) 评论(0) 推荐(0)
摘要: 对象的创建过程 new指令过程 跟类的加载其实差不多 检查new指令参数对应的类是否加载,若无则执行类加载 给对象分配内存 将对象的实例变量自动初始化为其变量类型的默认值 初始化对象,给实例变量赋予正确的初始值 检查new指令参数对应的类是否加载,若无则执行类加载 当java虚拟机遇到一条字节码ne 阅读全文
posted @ 2021-01-21 21:25 王者之剑KO 阅读(220) 评论(0) 推荐(0)
摘要: jvm组成 jvm的组成包括 类加载器,字节码执行引擎,内存模型。(并不是只有内存模型) 这图必背 要理解每个区域放的数据是什么 栈:局部变量,栈帧的概念 程序计数器:字节码的行号指示器 本地方法栈:native修饰的方法所需要的内存区域 方法区:类信息、常量、静态变量数据 堆:所有的对象 直接内存 阅读全文
posted @ 2021-01-21 21:24 王者之剑KO 阅读(108) 评论(0) 推荐(0)
摘要: JAVA特点 一门结构严谨,面向对象的编程语言 摆脱了硬件平台的束缚,实现了"一次编写,到处运行"的理想 提供了一种相对安全的内存管理和访问机制 Java运行过程 运行过程: java编译器(编译)->虚拟机(解释执行)->解释器(翻译)->机器码 跨平台性: java源码编译后会生成.class文 阅读全文
posted @ 2021-01-21 21:22 王者之剑KO 阅读(195) 评论(0) 推荐(0)