摘要: 什么是JMM? JMM(Java Memory Model)就是Java内存模型,是Java虚拟机规范中所定义的一种内存模型。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的程序运行在不同的系统上会出现各种问题。因此Java内存模型屏蔽了各种硬件和操作系统的访问差异 阅读全文
posted @ 2021-12-07 16:22 Alfie014 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 并发编程中的两个关键问题: 线程之间如何通信? 线程之间如何同步? 什么是线程通信? 线程通信是指线程之间如何交换信息。 什么是线程同步? 线程同步是指控制多个线程按照一定顺序先后执行。 如何实现线程通信? 共享内存 消息传递 怎样实现共享内存? 线程之间共享程序的公共状态,通过读、写内存中的程序公 阅读全文
posted @ 2021-12-07 15:15 Alfie014 阅读(43) 评论(0) 推荐(0) 编辑
摘要: main:执行启动类main()的线程; Reference Handler:处理引用的线程。用于处理引用对象本身(软引用、弱引用、虚引用)的垃圾回收问题; Finalizer:执行对象finalizer()的线程。JVM在垃圾收集时会将失去引用的对象包装成 Finalizer对象(Referenc 阅读全文
posted @ 2021-12-07 14:45 Alfie014 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 编译器方面: client模式:使用c1编译器,c1编译器更加轻量级; server模式:使用c2编译器; c2编译器编译相较于c1编译器更加彻底。 GC方面: client模式:一般选择串行GC垃圾收集器(JDK 8默认为:Serial+Serial Old); server模式:一般选择并行的G 阅读全文
posted @ 2021-12-07 14:03 Alfie014 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 非虚方法 所有static方法+final/private方法都是非虚方法。 非虚方法通过invokespecial指令调用,同时非虚方法的符号引用将转换为对应的直接引用(直接引用方法),在编译完成时就确定了唯一的调用方法。 虚方法 虚方法通过invokevirtual指令调用,且会有静态分派和动态 阅读全文
posted @ 2021-12-07 12:30 Alfie014 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 静态分派 静态分派根据静态类型定位方法的分派,典型应用是重载。 package learnjava.test; /** *@description 静态分配演示 */ public class StaticDispatch { // 超类 static abstract class Human { 阅读全文
posted @ 2021-12-07 12:12 Alfie014 阅读(55) 评论(0) 推荐(0) 编辑