当前位置: 主页 > JAVA语言

如何理解java堆栈-java 堆栈队列

发布时间:2023-02-09 09:27   浏览次数:次   作者:佚名

在学习Java基础的时候如何理解java堆栈,遇到了堆、栈、回收等问题。 我在这里记录一些我的浅见。 如有问题希望大家指出并修改(o゚v゚)ノ

前言

我们在学习的时候,会听到老一辈的程序员讲栈,但是系统中的堆和栈和数据中的堆和栈不是一个概念。 可以说系统中的堆和栈是物理内存区域,数据中的堆和栈是抽象的数据存储结构。

对于java内存分为堆、栈和方法区

1.什么是堆?

在堆中分配对象,即新对象。

如何理解java堆栈_java内存堆栈 图解_java 堆栈队列

1.什么是堆内存

堆内存是java内存的一种。 它用于在 Java 中存储对象和数组。 当我们创建一个新的对象或者创建一个数组的时候,我们会在堆内存中开辟一块空间给它保存

2、新对象在堆中是如何分配的?

由java虚拟机的自动垃圾收集器管理。

java 堆栈队列_java内存堆栈 图解_如何理解java堆栈

2.什么是栈?

堆栈分配是对原始类型和自定义对象的引用

比如你在方法中有一个String a=new String("123"),那么会先在堆中创建一个"123"的对象,然后把这个对象的引用放到栈上。

1.什么是栈内存

java内存堆栈 图解_java 堆栈队列_如何理解java堆栈

栈内存是Java中的另一种内存,主要用于执行程序,如:基本类型的变量和对象的引用变量

2.栈内存分配机制

栈内存可以称为一级缓存,由垃圾收集器自动回收

堆和栈的区别?

如何理解java堆栈_java 堆栈队列_java内存堆栈 图解

JVM 是一个基于堆栈的虚拟机。 JVM 会为新创建的线程分配一个栈。 对于一个java程序来说,它的运行是通过对栈的操作来结束的。

堆内存是线程私有的

堆内存由所有线程共享

附上一张图了解一下:

java 堆栈队列_java内存堆栈 图解_如何理解java堆栈

java 堆栈队列_java内存堆栈 图解_如何理解java堆栈

3、什么是方法区(静态存储区)?

主要存放静态数据、全局变量静态数据和常量。 该内存是在编译程序时分配的。 并且在程序运行时存在。

1、方法区也叫静态区如何理解java堆栈,是程序中永远唯一的元素存储区。 和堆一样,是各个线程共享的一块内存区域。 用于存放虚拟机已经加载的类信息、常量、静态变量、即时编译器编译的代码等数据。

总结

以上就是我今天要说的。 本文只简单介绍一下我所理解的堆、栈、方法区的理解。