字节码分析synchronized原理

同步控制指令Java虚拟机支持两种同步结构:方法级的同步和方法内部一段指令序列的同步,这两种同步都是使用monitor来支持的方法级的同步方法级的同步:是隐式的,即无须通过字节码指令来控制,它实现在方法调用和返回操作之中。虚拟机可以从方法常量池的方法表结构中的ACC_SYNCHRONIZED访问标志

Java线程是用户线程还是内核线程?

前置知识:用户线程内核不可见测试代码import java.util.concurrent.TimeUnit;/** * @author islandempty * @since 2021/5/16 **/public class Test { public static void main(

破坏双亲委派模型

如何打破双亲委派模型1.自定义类加载器双亲委派模型源码采用递归 向上委托,向下查找 protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {

JVM系列-第12章-垃圾回收器

垃圾回收器GC 分类与性能指标垃圾回收器概述垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。Java不同版本新特性语法层面:Lambd

JVM系列-第11章-垃圾回收相关概念

垃圾回收相关概念System.gc() 的理解在默认情况下,通过System.gc()者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。然而System.gc()调用附带一个免责声明,无法保证对垃圾收集

JVM系列-第10章-垃圾回收概述和相关算法

垃圾回收概述Java 和 C语言的区别,就在于垃圾收集技术和内存动态分配上,C语言没有垃圾收集技术,需要程序员手动的收集。垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收?如何

JVM系列-第9章-StringTable(字符串常量池)

StringTable(字符串常量池)String的基本特性String:字符串,使用一对 “” 引起来表示String s1 = "atguigu" ; // 字面量的定义方式String s2 = new String("hello"); /

JVM系列-第8章-执行引擎

执行引擎执行引擎概述执行引擎概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执

JVM系列-第7章-对象的实例化内存布局与访问定位

对象的实例化内存布局与访问定位对象的实例化大厂面试题美团:对象在JVM中是怎么存储的?对象头信息里面有哪些东西?蚂蚁金服:二面:java对象头里有什么对象创建的方式new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法Class的newInstance方

JVM系列-第6章-方法区

方法区栈、堆、方法区的交互关系从线程共享与否的角度来看ThreadLocal:如何保证多个线程在并发环境下的安全性?典型场景就是数据库连接管理,以及会话管理。栈、堆、方法区的交互关系下面涉及了对象的访问定位Person 类的 .class 信息存放在方法区中person 变量存放在 Java 栈的局
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×