JVM内存结构和Java内存模型都是面试的热点问题,名字看感觉都差不多,网上有些博客也都把这两个概念混着用,实际上他们之间差别还是挺大的。 通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关,本文针对这两个总是被混用的概念展开讲解。 文章目录 JVM内存结构 JVM构成 JVM内存结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区 GC垃圾回收机制 1. 垃圾判别方法 引用计数算法 可达性分析算法 2. 垃圾回收算法 标记清除法 标记整理法 复制算法 3. 分代垃圾回收机制 …

2021年1月17日 0条评论 10点热度 阅读全文

关于死锁,你知道多少? 本文就什么是死锁?怎么找到死锁?怎么解决死锁?怎么避免死锁等问题展开分析,通过大量的代码和案例演示向大家描述死锁的前世今生。 死锁是什么,有什么危害? 定义 并发情况下,当两个(或多个)线程(或进程)相互持有对方所需要的资源,又不主动释放,导致所有人都无法继续前进,程序无限阻塞,就是死锁 两个线程: 多个线程: 危害 死锁的影响在不同系统中是不一样的,这取决于系统对死锁的处理能力 数据库中:检测并放弃事务 JVM中:无法自动处理 死锁的几率不高但是危害大 一旦发生,多是高并发场景,影响用户多…

2021年1月17日 0条评论 22点热度 阅读全文

锁是并发中非常非常重要的部分,从最开始学并发常用的synchronized或者Lock到更进一步了解并发编程,会发现锁非常的多,概念也很多,不容易区分。 在较为全面的了解了之后决定先写下这篇博客打个底,并在后期的学习中进一步完善我的锁的知识体系 快速到达看这里-> Lock接口 简介 为什么需要Lock 方法介绍 可见性保证 Synchronized和ReetrantLock的区别 锁的分类 乐观锁和悲观锁 为什么会诞生非互斥同步锁(乐观锁) 什么是乐观锁和悲观锁 典型例子 开销对比 使用场景 可重入锁和非可…

2021年1月15日 0条评论 9点热度 阅读全文