- 博客(12)
- 收藏
- 关注
原创 JVM-堆
文章目录堆的核心概述堆空间的划分堆空间大小的设置年轻代与老年代图解对象分配的过程概述堆的核心概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区( ThreadLocal Allocation Buffer
2022-04-18 10:17:51
261
原创 JUC编程-读写锁
文章目录悲观锁与乐观锁悲观锁优点缺点乐观锁优点缺点表锁与行锁表锁行锁悲观锁与乐观锁悲观锁悲观锁是基于一种悲观的态度来防止一切数据冲突,它是以一种预防的姿态在修改数据之前把数据锁住,然后再对数据进行读写,在它释放锁之前任何人都不能对其数据进行操作,直到前面一个人把锁释放后下一个人数据加锁才可对数据进行加锁,然后才可以对数据进行操作,一般数据库本身锁的机制都是基于悲观锁的机制实现的。优点可以完全保证数据的独占性和正确性,因为每次请求都会先对数据进行加锁, 然后进行数据操作,最后再解锁。缺点加锁释
2022-04-15 15:58:32
862
原创 JUC编程-多线程锁
文章目录1.公平锁及非公平锁公平锁实现方式:优点缺点非公平锁优点缺点2.可重入锁3.死锁什么是死锁?产生死锁原因:1.公平锁及非公平锁公平锁按照线程等待顺序获取锁,一般将获取锁失败的线程放入等待队列中,每次从FIFO队列的队头取出线程获取锁。这种方式会造成性能低下,大量的时间花费在线程调度上。实现方式:ReentrantLock lock=new ReentrantLock(true);//true表示获取公平锁优点雨露均沾缺点效率相对较低非公平锁不管等待顺序,每个线程获取
2022-04-11 18:44:00
501
原创 JUC并发编程
文章目录1.简图2.详细图3.类加载子系统作用4.类加载器ClassLoader角色5.类的加载过程1.加载2.链接验证(Verify):准备(Prepare) :解析(Resoe) :3.初始化1.简图2.详细图3.类加载子系统作用1.类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。(在链接阶段中验证阶段去验证文件标识)2.ClassLoader只负责class文件的加载,至于他是否可以运行,则由Execution Engine(执行
2022-04-11 12:27:10
357
原创 尚硅谷2020最新版宋红康JVM教程-5-虚拟机栈
文章目录1.概述背景Java虚拟机栈是什么?生命周期作用优点常见异常设置栈内存大小2.栈的存储单元3.栈的运行原理4.栈帧的内部结构局部变量表solt(变量槽)slot重复利用5.静态变量与局部变量的对比6. 补充1.概述背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。栈是运行时的单位,而堆是存储的单位。即:栈解决程序的运行问题,即程序如何执行,或者
2022-04-08 22:54:49
624
原创 尚硅谷2020最新版宋红康JVM教程-4-PC寄存器
文章目录程序计数器(PC寄存器)介绍作用例子面试常被问到的两个问题1.使用PC寄存器存储字节码指令地址有什么用呢?2.PC寄存器为什么会被设定为线程私有?程序计数器(PC寄存器)介绍JVM中的程序计数寄存器(Program counter Register)中, Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起
2022-04-08 19:40:01
103
原创 尚硅谷2020最新版宋红康JVM教程-3-运行时数据区概述及线程
运行时数据区文章目录运行时数据区概述概述内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略保证了JVM的高效稳定运行。不同的JJVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。JVM内存结构简图:JVM内存结构详细图:...
2022-04-08 19:15:06
689
原创 尚硅谷2020最新版宋红康JVM教程-2-类加载子系统
双亲委派机制文章目录双亲委派机制引入1.工作原理引入Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。1.工作原理1)如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;2)如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启
2022-04-07 19:08:12
293
原创 尚硅谷2020最新版宋红康JVM教程-2-类加载子系统
类加载器的分类文章目录类加载器的分类JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)。从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范却没有这么定义,而是将所有派生于抽象类clalssLoader的类加载器都划分为自定义类加载器。我们可以以看到,Extension Class Loader以及AppClassLoader间接继承了C
2022-04-07 17:56:09
105
原创 尚硅谷2020最新版宋红康JVM教程-2-类加载子系统
类加载器子系统文章目录类加载器子系统1.简图2.详细图3.类加载子系统作用4.类加载器ClassLoader角色5.类的加载过程1.加载2.链接验证(Verify):准备(Prepare) :解析(Resoe) :3.初始化4.例子1.简图2.详细图3.类加载子系统作用1.类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。(在链接阶段中验证阶段去验证文件标识)2.ClassLoader只负责class文件的加载,至于他是否可以运行,则由
2022-04-07 17:06:30
459
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人