如何理解java堆栈-java 堆栈队列
在学习Java基础的时候如何理解java堆栈,遇到了堆、栈、回收等问题。 我在这里记录一些我的浅见。 如有问题希望大家指出并修改(o゚v゚)ノ
前言
我们在学习的时候,会听到老一辈的程序员讲栈,但是系统中的堆和栈和数据中的堆和栈不是一个概念。 可以说系统中的堆和栈是物理内存区域,数据中的堆和栈是抽象的数据存储结构。
对于java内存分为堆、栈和方法区
1.什么是堆?
在堆中分配对象,即新对象。
1.什么是堆内存
堆内存是java内存的一种。 它用于在 Java 中存储对象和数组。 当我们创建一个新的对象或者创建一个数组的时候,我们会在堆内存中开辟一块空间给它保存
2、新对象在堆中是如何分配的?
由java虚拟机的自动垃圾收集器管理。
2.什么是栈?
堆栈分配是对原始类型和自定义对象的引用
比如你在方法中有一个String a=new String("123"),那么会先在堆中创建一个"123"的对象,然后把这个对象的引用放到栈上。
1.什么是栈内存
栈内存是Java中的另一种内存,主要用于执行程序,如:基本类型的变量和对象的引用变量
2.栈内存分配机制
栈内存可以称为一级缓存,由垃圾收集器自动回收
堆和栈的区别?
JVM 是一个基于堆栈的虚拟机。 JVM 会为新创建的线程分配一个栈。 对于一个java程序来说,它的运行是通过对栈的操作来结束的。
堆内存是线程私有的
堆内存由所有线程共享
附上一张图了解一下:
3、什么是方法区(静态存储区)?
主要存放静态数据、全局变量静态数据和常量。 该内存是在编译程序时分配的。 并且在程序运行时存在。
1、方法区也叫静态区如何理解java堆栈,是程序中永远唯一的元素存储区。 和堆一样,是各个线程共享的一块内存区域。 用于存放虚拟机已经加载的类信息、常量、静态变量、即时编译器编译的代码等数据。
总结
以上就是我今天要说的。 本文只简单介绍一下我所理解的堆、栈、方法区的理解。