摘要:
一.内存模型的相关概念(高速缓存是每个线程特有的,也称本地缓存) 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。 由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向 阅读全文
摘要:
第一,记住wait必须要进行异常捕获,否则编译时会抛出 InterruptedException异常 第二,记住调用wait或者notify方法必须采用当前锁调用,即必须采用synchronized中的对象,否则抛出IllegalMonitorStateException 这样子为了线程同步,需要获 阅读全文
摘要:
1.程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行发生于书写在后面的操作 一段程序代码的执行在单个线程中(看起来)是有序的,因为虚拟机可能会对程序代码进行指令重排序。虽然进行重排序,但是最终执行的结果是与程序顺序执行的结果一致的,它只会对不存在数据依赖性的指令进行重排序,事实上,这个规 阅读全文
摘要:
一.集合与数组的区别 集合不是固定长度,和固定存放数据类型的, 数组只能存放统一的数据类型的数据,且长度是固定的 二.集合是什么(java集合存放在java.util包中,用来存放对象的容器) 注意: 1.集合只能存放对象,基本数据类型进集合都会自动转换为包装类 2.集合存放的是对象的引用,对象本身 阅读全文
摘要:
一.类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止, 它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶 阅读全文
摘要:
1.程序计数器:指向当前线程执行的字节码指令文件的地址和行号 为了在cpu将线程挂起,进行线程切换时,能够记录当前线程的执行进程,正确安全的执行完.2.虚拟机栈:(存储当前线程运行的方法的栈帧,只有等方法执行完栈帧才会出栈) 测试看在同一给方法中的多个方法. 用来执行对应的方法所需的数据,通过对方法 阅读全文
摘要:
一.java程序的具体执行过程: 1.java源文件会被java编译器编译成字节码文件 2.然后由jvm中的类加载器加载各个类的字节码文件 3.加载完后,由jvm的执行引擎执行 备注:在执行的过程中jvm一段空间来存储数据:运行时数据区,也称jvm内存 二.根据jvm规范,jvm把内存划分为了如下几 阅读全文