旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

关于java中堆内存与栈内存的详细分析【JAVA教程】,java,堆内存,栈内存,分析

作者:搜教程发布时间:2019-12-27分类:JAVA教程浏览:55评论:0


导读:一、概述在Java中,内存分为两种,一种是栈内存,另一种就是堆内存。二、堆内存1、什么是堆内存?堆内存是Java内存中的一种,它的作用是用于存储Java中的对象...

一、概述

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

二、堆内存

1、什么是堆内存?

堆内存是Java内存中的一种,它的作用是用于存储Java中的对象和数组,当我们new一个对象或许建立一个数组的时刻,就会在堆内存中拓荒一段空间给它,用于寄存。

2、堆内存的特性是什么?

第一点:堆实在能够相似的看作是管道,或许说是日常平凡去列队买票的的状况差不多,所以堆内存的特性就是:先进先出,落后后出,也就是你先列队,好,你先买票。

第二点:堆能够动态地分派内存大小,生存期也没必要事前通知编译器,因为它是在运转时动态分派内存的,但瑕玷是,因为要在运转时动态分派内存,存取速率较慢。

3、new对象在堆中怎样分派?

由Java虚拟机的自动垃圾接纳器来治理。

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

三、栈内存

1、什么是栈内存

栈内存是Java的另一种内存,主如果用来实行顺序用的,比方:基本范例的变量和对象的援用变量。

2、栈内存的特性

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

第二点:存取速率比堆要快,仅次于寄存器,栈数据能够同享,但瑕玷是,存在栈中的数据大小与生存期必需是肯定的,缺少灵活性

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的值是不会发作转变的。

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

四、栈和堆的区分

JVM是基于客栈的虚拟机,JVM为每一个新建立的线程都分派一个客栈。也就是说,关于一个Java顺序来讲,它的运转就是经由过程对客栈的操纵来完成的。客栈以帧为单元保留线程的状况。JVM对客栈只举行两种操纵:以帧为单元的压栈和出栈操纵。

差别点:

1.堆内存用来寄存由new建立的对象和数组。

2.栈内存用来寄存要领或许局部变量等。

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

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

相同点:

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

2.体系都邑自动去接纳它,然则关于堆内存平常开发人员会自动接纳它。

更多相干文章教程分享:java零基本入门

以上就是关于java中堆内存与栈内存的细致分析的细致内容,更多请关注ki4网别的相干文章!

标签:java堆内存栈内存分析


欢迎 发表评论: