这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情。我们直接来到hotspot的代码,为了高效我直接在github搜的,github网页版hotspot源码,当然也可以在oracle下载源码阅读,oracle下载hotspot源码。
Java栈 Java Stack:Java栈总是与线程关联在一起的,每当创建一个线程,JVM就会为该线程创建对应的Java栈,在这个Java栈中又会包含多个栈帧,这些栈帧是与每个方法关联起来的,每运行一个方法就创建一个栈帧,每个栈帧会含有一些局部变量、操作栈和方法返回值等信息。
JVM虚拟机是大厂必备技能,特别是JVM内存模型,JVM垃圾收集器、回收算法,以及性能优化这块更是重中之重,本篇我就全面的来详解JVM@mikechenJVM概要JVM是Java Virtual Machine(Java虚拟机)的缩写。
在上一篇文章见原文链接中,我们了解了计算机由于各个硬件的读取速度之间的巨大差距,和充分利用CPU的性能的手段方法,及其所带来的一系列问题:为了充分压榨CPU的性能,CPU 会对指令乱序执行或者语言的编译器会指令重排,让CPU一直工作不停歇,但同时会导致有序性问题。通俗点说:JMM规范了程序中变量的访问规则,保证了操作的原子性、可见性、有序性,我们下文慢慢道来。
本文源自《深入理解Java内存模型》。文章大致分三部分:重排序与顺序一致性;三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现;java 内存模型的设计,及其与处理器内存模型和顺序一致性内存模型的关系。