![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 93
JerryGao_
这个作者很懒,什么都没留下…
展开
-
【JVM】三、对象的存储策略(栈上分配和TLAB)
一、内存分配流程 我们都知道对象是存储在堆里的,但对象是不是只能存储在堆里呢?答案是否定的,事实上JVM在new一个对象的时候,有一套专门的存储策略来决定这个对象应该被放在哪。简单点说,在JVM里,对象不仅仅会被存储在堆里,也可能被存储在栈上。 这里先直接给一个流程图,来简单直观的说明JVM分配对象时的具体策略: 然后我们再以下面的代码为例,结合流程图,逐步的来探讨JVM在创建Person对象的时候都有哪些操作。 public void test(){ Person p = new Person(原创 2021-02-24 23:17:48 · 399 阅读 · 0 评论 -
【JVM】二、类加载过程
目录1. 简述2. 加载(Loading) 1. 简述 JVM讲一个class文件加载内存,然后进行验证、准备、解析(这三步也可以合称为链接)及初始化的完整过程称为类加载过程。这个过程种,各步骤的顺序是确定的: 在Java虚拟机规范中,没有强制约束什么时候要开始类的加载。但是严格规定了几种情况是必须进行类的初始化的(加载和链接需要在初始化之前开始): 1)遇到 new、getstatic、putstatic、或者invokestatic 这4条字节码指令,如果没有类没有进行过初始化,则触发初始化 2)使用原创 2021-02-21 23:27:56 · 164 阅读 · 1 评论 -
【JVM】一、JVM运行时数据区
目录1. 运行时数据区(Run-Time Data Areas) 1. 运行时数据区(Run-Time Data Areas) 根据Oracle提供的JVM官方文档《Java Virtual Machine Specification 8 Edition》,JVM的在运行时,其内存数据有以下几个分区: 程序计算器(The Program Counter Register) Java虚拟机栈(Java Virtual Machine Stacks) 堆(Heap) 方法区(Method Area) 运行时常原创 2021-02-16 01:39:54 · 306 阅读 · 1 评论 -
【JVM】Volatile变量的使用
在涉及到并发编程时,我们比较习惯用锁(synchronized)来做线程安全的保障,但其实有些时候我们可以使用Java提供的另一个同步机制vloatile来代替synchronize Volatile的含义 关键字volatile可以说是Java中最轻量级的同步机制,它的语义可以概括性的叙述为:“保证由volatile修饰的变量,发生任何修改都是对所有线程可见的”。这里的“可见”是指,当某一线程修...原创 2020-03-03 00:19:31 · 245 阅读 · 0 评论