java 栈内存 堆内存,java堆内存和栈内存图解

  java 栈内存 堆内存,java堆内存和栈内存图解

  一.概述

  在Java中,内存分为两种,一种是堆栈内存,一种是堆内存。

  第二,堆内存

  1.什么是堆内存?

  堆内存是Java内存的一种。它的功能是在Java中存储对象和数组。当我们创建一个对象或数组时,我们会在堆内存中打开一个空间来存储。

  2.堆内存有什么特点?

  第一点:堆其实可以看成一个管道,或者说和平时排队买票差不多,所以堆内存的特点是:先进先出,后进后出,也就是你先排队,好的,你先买票。

  第二点:堆可以动态分配内存大小,生存期不必提前告诉编译器,因为它是在运行时动态分配内存的,但缺点是由于运行时内存的动态分配,访问速度较慢。

  3.新对象在堆中是如何分配的?

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

  免费视频教程分享:java视频教程

  第三,堆栈内存

  1.什么是堆栈内存?

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

  2.堆栈存储器的特性

  第一点:堆栈内存就像一个矿泉水瓶。当你把东西放进去的时候,它先沉到底,所以它的特点是:先入后出,后入先出。

  第二点:访问速度比堆快,仅次于寄存器,堆栈数据可以共享,但缺点是必须确定堆栈中数据的大小和生存期,缺乏灵活性。

  3.堆栈内存分配机制

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

  4.数据共享

  示例:

  int a=3;

  int b=3;第一步:

  1.编译器首先处理int a=3;

  2.创建对变量a的引用。

  3.查看堆栈中是否有值3

  4.如果没有找到,存储3,用一个指向3的

  第二步是处理:

  1.治疗b=3

  2.创建对变量b的引用。

  3.找到它并直接分配它

  第三步是改变:

  然后

  a=4;方法同上。

  a的值变了,a指向4,b的值不变。

  PS:如果是两个对象的话,那就不一样了,对象指向的是同一个引用,一个发生改变,另一个也会发生改变。

  第四,栈和堆的区别

  JVM是基于堆栈的虚拟机。JVM为每个新创建的线程分配一个堆栈。也就是说,对于一个Java程序来说,它的操作是通过操作堆栈来完成的。将线程的状态保存在帧中。JVM栈上的操作只有两种:以帧为单位压栈和弹出栈。

  不同点:

  1.堆内存用于存储新创建的对象和数组。

  2.堆栈内存用于存储方法或局部变量等。

  3.堆是先进先出,后进后出。

  4.堆栈是后进先出,先进先出。

  相同点:

  1.都属于Java内存的一种。

  2.系统会自动回收,但是对于堆内存,开发者会自动回收。

  分享更多相关文章和教程:java Zero Foundation入门以上是java中堆内存和栈内存详细分析的详细内容。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: