在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Java一门面向对象的语言,在Java中使用的对象都需要被创建出来,在Java中创建一个对象的方法有很多种,但对象在创建过程中都需要进行内存分配。Java对象内存分配过程保证线程安全,对象的内存分配过程就必须进行同步控制。
对象的内存分配过程中,主要是对象的引用指向这个内存区域进行初始化操作。
但因为堆是全局共享,在同一时间可能有多个线程在堆上申请空间,在并发场景中如果两个线程先后把对象引用指向了同一个内存区域怎么办?
为了解决这个并发问题,对象的内存分配过程就必须进行同步控制。但是我们都知道,无论是使用哪种同步方案都会影响内存的分配效率。而Java对象的分配是Java中的高频操作,所有,人们想到另外一个办法来提升效率。
重点分析HotSpot虚拟机方案:
每个线程在Java堆中预先分配一小块内存,然后再给对象分配内存的时候,直接在自己这块”私有”内存中分配,当这部分区域用完之后,再分配新的”私有”内存。
该方案被称之为TLAB分配,即Thread Local Allocation Buffer。这部分Buffer是从堆中划分出来的,但是是本地线程独享的。
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解,Java程序员面试过程中经常会考到Java对象内存分配过程如何保证线程安全的面试题。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java基础 字节流与字符流的区别是什么?
要把一片二进制数据数据逐一输出到某个设备中,或者从某个设 备中逐一读取一片二进制数据,不管输入输出设备是什么,我们 要用统一的方式来完成这些操作,用一种抽象的方式进行描述, 这个抽象描述方式起名为 IO 流,对应的抽象类为 OutputStream 和 InputStream ,不同的实现类就代表不同的输入和输出设备, 它们都是针对字节进行操作的。
8964
2019-06-03 11:19:03
MyBatis十大经典面试题整理附答案
MyBatis作为一个备受欢迎的持久层框架,有着支持普通SQL查询,存储过程和高级映射等优势。这也是为什么大家都爱使用MyBatis的原因。在面试过程中,MyBatis也是面试官常常会考察求职者的知识点之一,本文应许多面试者的要求,为大家整理了十大经典的MyBatis面试题和对应的答案,有面试需求的小伙伴不妨一起来复习一下。
5849
2020-01-15 20:40:47
Java基础视频教程免费资源分享
Java基础视频教程免费资源分享,Java基础知识比较多,要学习Java语言核心语法、面向对象程序设计、常用API、集合框架、IO流、线程、进程、多线程、并发、并行、同步、异步、线程类常见方法、网络编程、反射技术、常用设计模式、JDK新特性等JavaSE领域的知识。
6027
2020-05-05 16:27:45
Java是什么?Java开发原理
在互联网行业经常会听到Java工程师,写Java的,在招聘和就业时Java工程师也是非常热门和抢手的岗位,那么Java究竟是什么呢?Java是一种为多个平台生成软件的编程语言。由Sun Microsystems的前计算机科学家James A. Gosling在20世纪90年代中期开发的。编译的代码可在大多数操作系统上运行。
3771
2020-05-26 10:07:35
Java入门应该学什么知识点?怎么入门?
零基础入门Java,先了解Java技术的背景及相关概念,了解什么是Java,代码语法基本格式,输出表达式;Java语言基础、循环、数组 ; 了解类和对象;OOP封装、继承、多态等内容。
3465
2021-05-20 14:34:30