当前位置: 首页 > news >正文

毕业设计做网站难吗知网回应被罚: 诚恳接受

毕业设计做网站难吗,知网回应被罚: 诚恳接受,阿里大鱼wordpress插件,怎么开网店赚钱文章目录1.概述1.1 堆1.2 栈2.堆内存2.1 什么是堆内存?2.2堆内存的特点是什么?2.3new对象在堆中如何分配?3.栈内存3.1什么是栈内存?3.2栈内存的特点3.3栈内存的内存分配机制3.4数据共享4.栈与堆的区别4.1差异4.2相同5. 面试题: java堆和栈的区别**申请方式****申请后系统的…

文章目录

  • 1.概述
    • 1.1 堆
    • 1.2 栈
  • 2.堆内存
    • 2.1 什么是堆内存?
    • 2.2堆内存的特点是什么?
    • 2.3new对象在堆中如何分配?
  • 3.栈内存
    • 3.1什么是栈内存?
    • 3.2栈内存的特点
    • 3.3栈内存的内存分配机制
    • 3.4数据共享
  • 4.栈与堆的区别
    • 4.1差异
    • 4.2相同
  • 5. 面试题: java堆和栈的区别
    • **申请方式**
    • **申请后系统的响应**
    • **申请大小的限制**
    • **申请效率的比较**
    • **堆和栈的存储内容**

1.概述

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

JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:

  1. 寄存器。
  2. 本地方法区
  3. 方法区。
  4. 栈。
  5. 堆。

1.1 堆

可以把堆理解为一家餐厅,里面有200张桌子,也就是最多能同时容纳200桌客人就餐,来一批客人就为他们安排一些桌子,如果某天来的客人特别多,超过200桌了,那就不能再接待超出的客人了。
当然,进来吃饭的客人不可能是同时的,有的早,有的晚,先吃好的客人,老板会安排给他们结账走人,然后空出来的桌子又能接待新的客人。
这里,堆就是餐厅,最大容量200桌就是堆内存的大小,老板就相当于GC(垃圾回收),给客人安排桌子就相当于java创建对象的时候分配堆内存,结账就相当于GC回收对象占用的空间。

1.2 栈

接着把栈比作一口废井,这口井多年不用已经没水了,主人现在把它作为贮存自酿酒的地方,存酒的时候就用绳子勾着酒坛子慢慢放下去,后面再存就一坛一坛堆着放上去,取酒的时候就先取最上面的坛子。

2.堆内存

2.1 什么是堆内存?

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

2.2堆内存的特点是什么?

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

第二点:堆可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,但缺点是,由于要在运行时动态分配内存,存取速度较慢

2.3new对象在堆中如何分配?

由Java虚拟机的自动垃圾回收器来管理

3.栈内存

3.1什么是栈内存?

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

3.2栈内存的特点

第一点:栈内存就好像一个矿泉水瓶,像里面放入东西,那么先放入的沉入底部,所以它的特点是:先进后出,后进先出

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

3.3栈内存的内存分配机制

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

3.4数据共享

例子:

int a = 3;
int b = 3;
第一步处理:
1.编译器先处理int a = 3;
2.创建变量a的引用
3.在栈中查找是否有3这个值
4.没有找到,将3存放,a指向3
第二步处理:
1.处理b=3
2.创建变量b的引用
3.找到,直接赋值
第三步改变:
接下来
a = 4;
同上方法
a的值改变,a指向4,b的值是不会发生改变的
如果是两个对象的话,那就不一样了,对象指向的是同一个引用,一个发生改变,另一个也会发生改变

4.栈与堆的区别

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

4.1差异

1.堆内存用来存放由new创建的对象和数组。
2.栈内存用来存放方法或者局部变量等
3.堆是先进先出, 后进后出
4.栈是先进后出, 后进先出

4.2相同

1.都是属于Java内存的一种
2.系统都会自动去回收它,但是对于堆内存一般开发人员会自动回收它

5. 面试题: java堆和栈的区别

Java栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程,主要存放线程执行过程中的局部变量,方法的返回值,基本类型的变量(,int, short, long, byte, float, double, boolean, char)以及方法调用的上下文。栈空间随着线程的终止而释放,栈的优势是,存取速度比堆要快,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈有一个很重要的特殊性,就是存在栈中的数据可以共享。

Java中堆是由所有的线程共享的一块内存区域,堆用来保存各种JAVA对象,比如数组,线程对象等,java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等 指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小, 生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

申请方式

  • 栈:由系统自动分配。例如在声明函数的一个局部变量int b,系统自动在栈中为b开辟空间。
  • 堆:需要程序员自己申请,并指明大小,在C中用malloc函数;在C++中用new运算符。

申请后系统的响应

  • 栈:只要栈的剩余空间大于所申请的空间,系统将为程序提供内存,否则将报异常提示栈溢出。
  • 堆:操作系统有一个记录空间内存地址的链表,当系统收到程序的申请时,会遍历链表,寻找第一个空间大于所申请空间的堆节点,然后将节点从内存空闲节点链表中删除,并将该节点的空间分配给程序。对于大多数操作系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。另外,由于找到的对节点的大小不一定正好等于申请的大小,系统会自动地将多余的那部分重新放入到链表中

申请大小的限制

栈:在Windows下,栈是向低地址拓展的数据结构,是一块连续的内存的区域。站定地址和栈的大小是系统预先规定好的,如果申请的内存空间超过栈的剩余空间,将提示栈溢出
堆:堆是向高地址拓展的内存结构,是不连续的内存区域。是系统用链表存储空闲内存地址的,不连续

申请效率的比较

  • 栈:由系统自动分配,速度较快。但程序员无法控制。
  • 堆:由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来方便。

**拓展:**在Windows操作系统中,最好的方式使用VirtualAlloc分配内存。不是在堆,不是在栈,而是在内存空间中保留一块内存,虽然用起来不方便,但是速度快,也很灵活。

堆和栈的存储内容

  • 栈:在函数调用时,第一个进栈的是主函数的中的下一条指令(函数调用的下一个可执行语句)的地址,然后是函数的各个参数。在C编译器中,参数是由右往左入栈的,然后是函数的局部变量。静态变量不入栈。
  • 堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容由程序员安排。

数据结构方面的堆和栈与上边叙述不同。这里的堆是指优先队列的一种数据结构,第一个元素有最高的优先权;栈实际就是满足先进后出的性质的数学或数据结构

参考文章(侵删):
Java 堆和栈的区别
一分钟彻底理解Java中的堆和栈

http://www.yayakq.cn/news/20248/

相关文章:

  • 网站建设要学哪些在对方网站做友情链接
  • 北京市朝阳区网站开发公司济南企业网站建设公司
  • 灯饰网站需要这么做邢台网站推广报价
  • 网站开发属于商标哪个类别使用本地主机做网站
  • 甘肃交通工程建设监理公司网站东莞常平镇地图
  • 婚纱网站模板下载WordPress维护模式退出
  • 豫建设标文件在哪个网站公布为什么做的网站在浏览器搜不到
  • 福州网站设计招聘最稳定的灰色词排名
  • 最牛的网站建设thinkphp做直播网站
  • python做网站是不是特别慢网站制作报价是否合法
  • 网站站点名网站建设与管理说课ppt
  • 中国招标机构哪个网站做的好百度快速seo软件
  • 网站设计网站高新区免费网站建设
  • 可以免费网络推广网站推广优化网站
  • 佛山市制作网站广西建设工程信息网
  • 工作室需要营业执照吗seo网络推广报价
  • 网站建设主要营销内客怎么做图片网站
  • wordpress 调用api燕郊seo
  • 网站建设引领者网站整体风格设计
  • 南京润盛建设集团有限公司网站网站更改空间
  • 昌邑营销型网站建设东莞seo建站费用
  • 做电商宠物带哪个网站最好免费综合网站注册申请
  • 爱站网主要功能网站导航是什么
  • 企业网站建设需要做些什么电子类网站建设需要多少钱
  • 化妆品网站建设方案项目书成都网站开发建
  • 最牛的设计网站建设网站建设sql语句留言板
  • 大连外贸网站建设泰安房产成交信息网
  • 网站免费打包三亚百度推广开户
  • 怎么样才能自己建网站外贸网站好做吗
  • 绍兴市网站建设公司我自己做的一个网站显示证书错误