美文网首页
Java的堆和栈的理解

Java的堆和栈的理解

作者: 尤文队长迪巴拉 | 来源:发表于2019-03-01 14:35 被阅读0次

heap和stack是java内存中数据存储的表现方式。

heap和stack的共享分为两种方式:1、数据共享  2、线程共享。

简单来说stack是数据共享,heap是线程共享。

例如:int a = 1; 

           int b = 1;

运行开始编译器首先处理int a = 1;首先会创建一个a的引用,然后去查询字面值1的地址,如果没有找到,就创建一个字面值为1的地址,然后将a指向这个地址,再处理int b = 1;去查找地址为1的地址,找到了,就把b指向这个引用地址,此时栈中ab都指向了1的地址,也就是数据共享了。

对于heap来说,只能有一个引用对象,每一个线程都有自己的stack,所有线程的stack都是不共享的,只有heap是共享的。

stack主要是存储基本数据类型,对象的引用等,数据执行完毕后,变量会立马释放,节省资源,栈中没有默认初始值,要手动设置。

heap存放的是new创建的对象和数组,heap中的实体是用来封装对象的,当实体没有指向是,就会被GC自动回收。

相关文章

  • 10.11java中的堆和栈

    java高级-堆和栈 java堆 /栈 栈内存 / 堆内存的区别 1. java堆 /栈 2. 栈内存 / 堆内存的区别

  • Java的堆和栈的理解

    heap和stack是java内存中数据存储的表现方式。 heap和stack的共享分为两种方式:1、数据共享 2...

  • 深入理解Java知识中的堆和栈

    在Java语言的学习过程中最重要的就是理解好堆和栈,因为java的面向对象特性跟堆和栈的分离密切相关,所以细致深入...

  • Java中的堆和栈

    堆和栈都是Java在Ram中存放数据的地方,Java自动管理堆和栈,开发者不能直接地设置堆或栈。 Java的堆是一...

  • 【Jvm】运行时数据区域

    内容来自《深入理解Java虚拟机》和网络。 本篇结构: 程序计数器 Java 虚拟机栈 本地方法栈 Java 堆(...

  • JVM内存分配策略 和 内存回收策略

    java 内存分配基于两种,堆 和 栈。 1.栈 和 堆 java栈java栈的分配是和线程绑定在一起的,当我们创...

  • [Java 编程思想]第二章

    1. java是基于C++ 2. 堆和栈的区别 栈和堆都是java用来在Ram中存放数据的地方,java自动管理栈...

  • 堆和栈的理解

    一、预备知识―程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编...

  • JVM内存模型

    Java内存模型把Java虚拟机内部划分为线程栈和堆。 Java 内存中堆和栈有什么区别: Stack栈是存放方法...

  • Android内存管理及内存泄漏分析(一)

    1、堆和栈 要了解Android的内存,必须先从Java的堆和栈看起,我们先看看《Think In Java》中对...

网友评论

      本文标题:Java的堆和栈的理解

      本文链接:https://www.haomeiwen.com/subject/vearuqtx.html