摘要: 运行时数据区的构成 PC 程序计数器 存放指令位置 虚拟机的运行,类似于这样的循环: while( not end ) { ​ 取PC中的位置,找到对应位置的指令; ​ 执行该指令; ​ PC ++; } JVM Stack Frame - 每个方法对应一个栈帧 Local Variable Tab 阅读全文
posted @ 2021-08-15 23:11 gary2048 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 类加载流程 class 是怎么从硬盘中加载到内存中:编译 加载 初始化 Loading 双亲委派,主要出于安全来考虑 package com.mashibing.jvm.c2_classloader; public class T004_ParentAndChild { public static 阅读全文
posted @ 2021-08-15 19:10 gary2048 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 1:JVM基础知识 什么是JVM JAVA VIRTUAL MACHINE 从编码到运行过程 jvm跟class无关。任何语言只要能遵循class的规范,一样能被jvm 运行。 JDK、JRE、JVM的关系 jvm实现 2:ClassFileFormat 整个class文件的格式就是一个二进制字节流 阅读全文
posted @ 2021-08-15 19:08 gary2048 阅读(39) 评论(0) 推荐(0) 编辑
摘要: JMM 硬件层的并发优化基础知识 硬件层数据一致性 读取缓存以cache line为基本单位,目前64bytes 位于同一缓存行的两个不同数据,被两个不同CPU锁定,产生互相影响的伪共享问题 伪共享问题:JUC/c_028_FalseSharing 使用缓存行的对齐能够提高效率 package co 阅读全文
posted @ 2021-08-15 19:08 gary2048 阅读(53) 评论(0) 推荐(0) 编辑
摘要: Java并发内存模型 使用JavaAgent测试Object的大小 对象大小(64位机) 观察虚拟机配置 java XX:+PrintCommandLineFlags version 对象的内存布局 在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数 阅读全文
posted @ 2021-08-15 19:08 gary2048 阅读(51) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal ThreadLocal 修饰的变量,是线程独有的 ThreadLocal源码 set方法 获取当前线程,并获取当前线程的ThreadLocalMap实例(从getMap(Thread t)中很容易看出来)。 如果获取到的map实例不为空,调用map.set()方法,否则调用构 阅读全文
posted @ 2021-08-15 15:33 gary2048 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 面试题1 实现一个容器,提供两个方法add、size,写两个线程: 线程1,添加10个元素到容器中 线程2,实时监控元素个数,当个数到5个时,线程2给出提示并结束 wait&notify /** * 曾经的面试题:(淘宝?) * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添 阅读全文
posted @ 2021-08-15 15:33 gary2048 阅读(289) 评论(0) 推荐(0) 编辑
摘要: Atomic Vs Sync Vs LongAdder package com.mashibing.juc.c_018_00_AtomicXXX; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.Ato 阅读全文
posted @ 2021-08-15 00:21 gary2048 阅读(41) 评论(0) 推荐(0) 编辑
摘要: volatile volatile作用 保证线程的 可见性 ,同时 禁止指令的重排序 可见性 堆内存是所有线程共享里面的内存,除了共享的内存之外呢,每个线程都有自己的专属的区域,都有自己的工作内存,如果说在共享内存里有一个值的话,当我们线程,某一个线程都要去访问这个值的时候,会将这个值copy一份, 阅读全文
posted @ 2021-08-14 23:42 gary2048 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 多线程 基本概念 什么是叫一个进程? 什么叫一个线程? Program app QQ.exe 进程: 做一个简单的解释,你的硬盘上有一个简单的程序,这个程序叫QQ.exe,这是一个程序, 这个程序是一个静态的概念,它被扔在硬盘上也没人理他,但是当你双击它,弹出一个界面输入账 号密码登录进去了,OK, 阅读全文
posted @ 2021-08-14 22:49 gary2048 阅读(29) 评论(0) 推荐(0) 编辑