摘要: 6.对象的实例化内存布局与访问定位 一、对象的实例化 大厂面试题 美团: 对象在JVM中是怎么存储的? 对象头信息里面有哪些东西? 蚂蚁金服: 二面:java对象头里有什么 1.1 对象创建的方式 new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法 Class的newInstance方 阅读全文
posted @ 2022-03-05 22:13 随遇而安== 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 5.方法区 一、栈、堆、方法区的交互关系 从线程共享与否的角度来看 ThreadLocal:如何保证多个线程在并发环境下的安全性?典型场景就是数据库连接管理,以及会话管理。 栈、堆、方法区的交互关系 下面涉及了对象的访问定位 Person 类的 .class 信息存放在方法区中 person 变量存放在 Jav 阅读全文
posted @ 2022-03-05 21:08 随遇而安== 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 4.堆 一、堆的核心概述 1.堆与进程 堆针对一个JVM进程来说是唯一的。也就是一个进程只有一个JVM实例,一个JVM实例中就有一个运行时数据区,一个运行时数据区只有一个堆和一个方法区。 但是进程包含多个线程,他们是共享同一堆空间的。 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Ja 阅读全文
posted @ 2022-03-05 16:20 随遇而安== 阅读(88) 评论(0) 推荐(1) 编辑
摘要: 3.虚拟机栈 一、虚拟机栈 1.简介 1.1虚拟机栈的出现背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的【如果设计成基于寄存器的,耦合度高,性能会有所提升,因为可以对具体的CPU架构进行优化,但是跨平台性大大降低】。 优点是跨平台,指令集小,编译器容 阅读全文
posted @ 2022-03-05 14:25 随遇而安== 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 2.运行时数据区概述及线程 1.前言 本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载 –> 验证 –> 准备 –> 解析 –> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区 类比一下也就是大厨做饭,我们把大厨后面的东西( 阅读全文
posted @ 2022-03-05 13:23 随遇而安== 阅读(635) 评论(0) 推荐(0) 编辑