在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
Java一门面向对象的语言,在Java中使用的对象都需要被创建出来,在Java中创建一个对象的方法有很多种,但对象在创建过程中都需要进行内存分配。Java对象内存分配过程保证线程安全,对象的内存分配过程就必须进行同步控制。

对象的内存分配过程中,主要是对象的引用指向这个内存区域进行初始化操作。
但因为堆是全局共享,在同一时间可能有多个线程在堆上申请空间,在并发场景中如果两个线程先后把对象引用指向了同一个内存区域怎么办?

为了解决这个并发问题,对象的内存分配过程就必须进行同步控制。但是我们都知道,无论是使用哪种同步方案都会影响内存的分配效率。而Java对象的分配是Java中的高频操作,所有,人们想到另外一个办法来提升效率。
重点分析HotSpot虚拟机方案:
每个线程在Java堆中预先分配一小块内存,然后再给对象分配内存的时候,直接在自己这块”私有”内存中分配,当这部分区域用完之后,再分配新的”私有”内存。
该方案被称之为TLAB分配,即Thread Local Allocation Buffer。这部分Buffer是从堆中划分出来的,但是是本地线程独享的。
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解,Java程序员面试过程中经常会考到Java对象内存分配过程如何保证线程安全的面试题。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java入门基础学习之流概念
今天我们来梳理一下Java入门基础知识——流。本文将从流的定义、分类、标准的输入/输出流以及I/O流按类型分类四部分来介绍,让大家全面系统的了解流概念。感兴趣的同学就赶紧看下去吧!
6575
2019-08-14 17:51:40
Java程序员Spring框架面试题汇总附答案
Spring框架对于服务器端的开发大有帮助,无论从简单性、可测试性和松耦合性角度来说,Java应用都可以从Spring中受益。本文整理汇总了Java程序员在面试中关于Spring框架的面试题,涉及大量Spring框架知识点,不会做的话还可以参考答案,有面试需求的朋友赶紧来刷题吧!
7771
2019-11-21 15:51:56
MyBatis十大经典面试题整理附答案
MyBatis作为一个备受欢迎的持久层框架,有着支持普通SQL查询,存储过程和高级映射等优势。这也是为什么大家都爱使用MyBatis的原因。在面试过程中,MyBatis也是面试官常常会考察求职者的知识点之一,本文应许多面试者的要求,为大家整理了十大经典的MyBatis面试题和对应的答案,有面试需求的小伙伴不妨一起来复习一下。
8734
2020-01-15 20:40:47
GC垃圾回收学习笔记整理
只要掌握了GC垃圾回收的相关知识点,程序员在工作中就不用担心内存管理了,因为垃圾收集器会自动进行管理。本文为大家整理了GC垃圾回收的学习笔记,主要内容包括了判断回收条件,虚拟机频繁full GC的解决对策以及经典的垃圾回收算法。大家要是对GC垃圾回收的相关学习学习感兴趣,就接着看下去吧!
6707
2020-03-26 22:20:37
微服务和分布式的区别什么?有什么特点?
微服务设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上也可以是同一个服务器。分布式属于微服务,将模块拆分成一个独立的服务单元通过接口来实现数据的交互。分布式和微服的架构很相似,只是部署的方式不一样而已。
6644
2021-03-10 11:10:50
