
JVM
文章平均质量分 95
yZzzzzc98
一天一杯咖啡,心态不会崩溃,Java深入我心,我与offer同行。
快乐分享,快乐学习。
展开
-
Java堆内存是线程共享的吗?
Java堆内存是线程共享的吗?看似简单却暗藏玄机。本文来源:敖丙。Java堆内存是线程共享的吗?Java对象的内存分配过程是如何保证线程安全的?什么是TLABTLAB带来的问题TLAB使用的相关参数总结多说几句Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解。可以说,关于JVM的相关知识,基本是每个Java开发者必学的知识点,也是面试的时候必考的知识点。在JVM的内存结构中,比较常见的两个区域就是堆内.转载 2020-08-11 20:50:37 · 842 阅读 · 0 评论 -
从markword了解Java锁升级过程
锁升级过程JDK8 markword实现表64位最新版无锁 - 偏向锁 - 轻量级锁 (自旋锁,自适应自旋)- 重量级锁synchronized优化的过程和markword息息相关用markword中最低的三位代表锁状态 其中1位是偏向锁位,两位是普通锁位如果有线程上锁上偏向锁,指的就是,把markword的线程ID改为自己线程ID的过程偏向锁不可重偏向 批量偏向 批量撤销如果有线程竞争撤销偏向锁,升级轻量级锁线程在自己的线程栈生成LockRecord ,用CAS操作将markwo原创 2020-08-08 16:37:14 · 605 阅读 · 0 评论 -
深入浅出Java Volatile
volatile在java中很常见,比如懒汉式单例。那为什么单例模式要加volatile呢?加volatile究竟有什么用呢?现在我们深入剖析一下volatile关键字深入浅出Volatile(眼见为实)volatile 内存可见性与指令重排序1 内存可见性1.1 什么是内存可见性1.2 volatile 关键字解决内存同步问题2 指令重排序2.1 什么是指令重排序2.2 volatile如何解决指令重排序3 DCL单例需不需要加volatile?3.1 DCL单例模式3.2 对象的创建过程(原因)4.原创 2020-08-08 16:20:24 · 193 阅读 · 0 评论 -
深入理解Java虚拟机——04_深入JVM与垃圾回收机制
深入JVM与垃圾回收机制深入JVM与垃圾回收机制(1) 基本概念:(2) 运行过程:(3) 跨平台的原因1.线程2.内存区域1)程序计数器(线程私有)面试常问CPU时间片并行与并发2)虚拟机栈(线程私有)3)本地方法栈(线程私有)4)堆(Heap-线程共享)5)方法区/永久代(线程共享)3.JVM运行时内存1)新生代①Eden 区:②ServivorFrom:③ServivorTo:④MinorGC(YGC) 的过程:2)老年代分代算法调优:**尽量减少FGC**为什么需要STW?3)永久代(jdk7)/元原创 2020-07-26 10:57:57 · 281 阅读 · 0 评论 -
深入理解Java虚拟机——03_JVM运行时数据区初识
JVM运行时数据区初识JVM运行时数据区初识内存与线程1.内存2.分区介绍3.线程3.1 JVM系统线程JVM运行时数据区初识内存与线程1.内存内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的jvm对于内存的划分方式和管理机制存在着部分差异(对于Hotspot主要指方法区)(图源阿里)JDK8的元数据区+JIT编译产物 就是JDK8以前的方法区2.原创 2020-07-26 09:57:04 · 325 阅读 · 0 评论 -
深入理解Java虚拟机——02_JVM类加载子系统
JVM类加载子系统JVM类加载子系统JVM架构图1.类加载子系统作用1.1类加载器ClassLoader角色1.2加载1.3 链接1.3.1 验证(verify)1.3.2 准备(prepare)1.3.3 解析(resolve)1.4初始化2.类加载器分类2.1 自定义类与核心类库的加载器2.2 虚拟机自带的加载器代码演示2.3 用户自定义类加载器3 ClassLoader的常用方法及获取方法3.1 ClassLoader类,它是一个抽象类,其后所有的类加载器都继承自ClassLoader(不包括启动类加原创 2020-07-26 09:48:04 · 618 阅读 · 1 评论 -
深入理解Java虚拟机——01_JVM初识
JVM初识JVM简介1.JVM的位置2.一些常见的JVM3.Android虚拟机 DVM4.JVM类加载机制4.1.java代码执行流程4.2.栈的指令集架构和寄存器的指令集架构4.3.jvm生命周期4.3.1.启动4.3.2.执行4.3.3.退出JVM简介1.JVM的位置2.一些常见的JVM使用JIT(编译器)能提升效率,但是程序刚运行时,因为要翻译成机器指令,加载到缓存会卡顿,暂停一下。解释器和JIT可以理解为步行和乘公交车。解释器步行上班,JIT乘公交车上班(需要等公交,转车的时候等待,原创 2020-05-26 11:43:44 · 633 阅读 · 0 评论