当前位置: 首页 > 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/838367/

相关文章:

  • 做电子商务平台网站需要多少钱琪恋网站建设
  • seo属于什么杭州seo推广公司
  • 建设网站的风险国内常用的crm系统
  • 电商网站设计制作兰州市建设厅官方网站
  • 网站做分站整站优seo排名点击
  • 北京做网站推广的公司网站系统建设合同范本
  • 2017网站建设报价表滦南县建设局网站
  • 安徽网新科技网站建设介绍昆山网站建设详细方案
  • 淘客网站建设视频网站建设如何查看后台数据库
  • 简述网站内容管理流程推广普通话海报
  • 网站免费正能量安全自动翻译wordpress中文标签别名为英文
  • 网站建设 摄影服务惠州seo计费管理
  • 网站推广网wordpress the7 中文视频教程
  • 佛山网站设计特色seo织梦网站建设步骤
  • 绍兴网站制作网站微信小程序开发网站建设
  • 阿坝州建设局网站刘志彬app研发风险
  • 网站运营与管理论文做网站设置时间
  • 钓鱼网站的域名怎么不稳定wordpress教学视频
  • 手机网站菜单设计wordpress简码
  • 顶顶呱网站建设南京网站建设 ww
  • 网站seo关键词排名推广网站建设功能怎么写
  • 咨询行业网站建设公司有效推广网站
  • 机械毕业设计代做网站推荐好的公文写作网站
  • 北京做网站建设公司哪家好wordpress图床
  • jsp手机版网站开发网站制作工具
  • 网站关键词排名批量查询外贸网站销售方式
  • 山东城乡建设部网站首页个人简历范本
  • 争对银行排队做一网站做网站需要学php哪些技术
  • 南宁制作网站怎么在网站做视频接口
  • 舟山手机网站建设360推广登录入口