首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
JVM
订阅
Chenyogie
更多收藏集
微信扫码分享
微信
新浪微博
QQ
19篇文章 · 0订阅
并发原理抽丝剥茧,线程本地变量ThreadLocal的实现原理
ThreadLocal我们经常称之为线程本地变量,通过它能够实现线程与变量之间的绑定,也就是说每个线程只能读写本线程对应的变量。对于同一个ThreadLocal对象,每个线程对该对象读写时只能看到属于自己的变量,这样来看ThreadLocal也是一种线程安全的模式。Thread…
Java字节码增强探秘
Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用。因此,也可以看出字节码对于Java生态的重要性。之所以被称之为字节码,是因为字节码文件由十六进制值…
Synchronized解析——如果你愿意一层一层剥开我的心
synchronized,是解决并发情况下数据同步访问问题的一把利刃。那么synchronized的底层原理是什么呢?下面我们来一层一层剥开它的心,就像剥洋葱一样,看个究竟。 接下来,我们先剥开synchronized的第一层,反编译其作用的代码块以及方法。 由图可得,添加了s…
死磕 java同步系列之自己动手写一个锁Lock
本篇文章的目标一是自己动手写一个锁,这个锁的功能很简单,能进行正常的加锁、解锁操作。 本篇文章的目标二是通过自己动手写一个锁,能更好地理解后面章节将要学习的AQS及各种同步器实现的原理。 首先,在上一章学习synchronized的时候我们说过它的实现原理是更改对象头中的Mar…
面试官:你对JVM垃圾收集器了解吗?13连问你是否抗的住!
3、垃圾回收的优点和原理。并考虑2种回收机制 在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对…
面试官:怎么排查堆内存溢出呀?
上次给小伙伴们说过了死循环cpu飙高的排查过程,今天就带着大家看看堆内存溢出我们一般怎么排查的。 老婆我就是不了解,人家要你说给我听。 今天我就直说堆,因为溢出是发送在堆中的。 JVM堆内存被分为两部分:年轻代(Young Generation)和老年代(Old Generat…
Java程序员必备:jstack命令解析
jstack是JVM自带的Java堆栈跟踪工具,它用于打印出给定的java进程ID、core file、远程调试服务的Java堆栈信息. New:创建后尚未启动的线程处于这种状态,不会出现在Dump中。 RUNNABLE:包括Running和Ready。线程开启start()方…
高级java工程师面试必备:jvm知识体系总揽
要面试的赶紧看吧
JVM最常见的知识点总结
记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 栈进行动态扩展时如果…
没内鬼,来点干货!volatile和synchronized
运行这段代码我们可能会得到一个匪夷所思的结果:我们获得的单例对象是未初始化的。为什么会出现这种情况?因为指令重排 首先要明确一点,同步代码块中的代码也是能够被指令重排的。然后来看问题的关键 由于步骤2,3交换不会改变单线程环境下的执行结果,故而这种重排序是被允许的。也就是我们在…