加入收藏 | 设为首页 | 会员中心 | 我要投稿 信阳站长网 (https://www.0376zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

Java堆内存是线程共享的!

发布时间:2021-02-26 17:28:22 所属栏目:传媒 来源:互联网
导读:都是这样介绍的: 1、堆是线程共享的内存区域,栈是线程独享的内存区域。 2、堆中主要存放对象实例,栈中主要存放各种基本数据类型、对象的引用。 但是,作者可以很负责任的告诉大家,以上两个结论均不是完全正确的。 本文首先带大家了解一下为什么我会说堆

都是这样介绍的:

1、堆是线程共享的内存区域,栈是线程独享的内存区域。

2、堆中主要存放对象实例,栈中主要存放各种基本数据类型、对象的引用。

但是,作者可以很负责任的告诉大家,以上两个结论均不是完全正确的。

本文首先带大家了解一下为什么我会说“堆是线程共享的内存区域,栈是线程独享的内存区域。”这句话并不完全正确!?关于JVM内存结构的相关知识,大家可以阅读JVM内存结构 VS Java内存模型 VS Java对象模型、万万没想到,JVM内存结构的面试题可以问的这么难?等文章。

在开始进入正题之前,请允许我问一个和这个问题看似没有任何关系的问题:Java对象的内存分配过程是如何保证线程安全的?

Java对象的内存分配过程是如何保证线程安全的?

我们知道,Java是一门面向对象的语言,我们在Java中使用的对象都需要被创建出来,在Java中,创建一个对象的方法有很多种,但是无论如何,对象在创建过程中,都需要进行内存分配。

对象的内存分配过程中,主要是对象的引用指向这个内存区域,然后进行初始化操作。

但是,因为堆是全局共享的,因此在同一时间,可能有多个线程在堆上申请空间,那么,在并发场景中,如果两个线程先后把对象引用指向了同一个内存区域,怎么办。


(编辑:信阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读