精华内容
下载资源
问答
  • 2022-03-07 10:20:28

    1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
    2、堆区(heap):一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
    3、全局区(静态区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。
    4、文字常量区:常量字符串就是放在这里的。 程序结束后由系统释放。
    5、程序代码区:存放函数体的二进制代码。

    更多相关内容
  • 进程的内存分为几部分.zip 编写程序大家都会,但是你知道内存分为多少个区域吗? 除了栈, 堆以外,你还知道哪些内存存储区? 全局变量赋了初值与未赋初值其内存有何区别? 你想过吗? 今天就详细给你说下内存分布有哪...
  • JVM内存区域分为五个部分,分别是堆,方法区,虚拟机栈,本地方法栈,程序计数器。 堆。 堆是Java对象的存储区域,任何用new字段分配的Java对象实例和数组,都被分配在堆上,Java堆可使用-Xms -Xmx进行内存控制,...

    JVM内存区域分为五个部分,分别是堆,方法区,虚拟机栈,本地方法栈,程序计数器。

    • 堆。 堆是Java对象的存储区域,任何用new字段分配的Java对象实例和数组,都被分配在堆上,Java堆可使用-Xms -Xmx进行内存控制,值得一提的是从JDK1.7版本之后,运行时常量池从方法区移到了堆上。
    • 方法区。它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据,方法区在JDK1.7版本及以前被称为永久代,从JDK1.8永久代被移除。
    • 虚拟机栈。虚拟机栈中执行每个方法的时候,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
    • 本地方法栈。与虚拟机栈发挥的作用相似,相比于虚拟机栈为Java方法服务,本地方法栈为虚拟机使用的Native方法服务,执行每个本地方法的时候,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
    • 程序计数器。指示Java虚拟机下一条需要执行的字节码指令。
      以上五个区域是Java虚拟机内存划分情况,其中方法区和堆被JVM中多个线程共享,比如类的静态常量就被存放在方法区,供类对象之间共享,虚拟机栈,本地方法栈,pc寄存器是每个线程独立拥有的,不会与其他线程共享。
      所以Java在通过new创建一个类对象实例的时候,一方面会在虚拟机栈中创建一个该对象的引用,另一方面会在堆上创建类对象的实例,然后将对象引用指向该对象的实例。对象引用存放在每一个方法对应的栈帧中。

    原文出自:JVM内存分为哪几部分?各个部分的作用是什么?

    展开全文
  • jvm的内存结构主要包含哪部分发布时间:2020-06-04 14:24:33来源...jvm内存分为五大块:标灰的是线程公有的内存区域,没有标灰的是线程私有一:程序计数器:程序计数器是用来指示当前线程要执行哪条指令,并且在...

    jvm的内存结构主要包含哪几个部分

    发布时间:2020-06-04 14:24:33

    来源:亿速云

    阅读:196

    作者:Leah

    jvm的内存结构主要包含哪几个部分?针对这个问题,今天小编总结这篇有关内存结构的文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。

    jvm内存分为五大块:

    97d3854d1edebdfea30d300ef2fe4203.png

    标灰的是线程公有的内存区域,没有标灰的是线程私有

    一:程序计数器:程序计数器是用来指示当前线程要执行哪条指令,并且在执行完该条指令后让程序计数器指向下一条指令,直到将程序执行完毕。指令需要靠cpu来执行,在多线程中,多个线程是通过轮流切换分配cpu的时间片而执行的,在切换时需要记录当前执行到了哪条指令以便将来继续执行,每一个线程都需要有自己的程序计数器,所以程序计数器是线程私有的内存。

    二:虚拟机栈:通常我们把jvm的内存粗略的分为堆和栈,其中的栈指的就是虚拟机栈,虚拟机栈也是线程私有的。

    虚拟机栈对应的是方法的内存区域,每个方法执行时都会创建一个栈帧,用来存储该方法的局部变量表,操作数栈,动态链接,方法返回地址:

    56fc3048c09eaf4b63b7e8290a73cd02.png

    1.局部变量表:局部变量表中存储的是方法的参数和方法中定义的局部变量,在编译期间就为局部变量表分配好了内存空间。局部变量表中存储三种类型的数据:

    (1) 基本数据类型

    (2) 引用类型:指向一个对象在内存中的地址

    (3) returnAddress类型:指向指令的地址(已经很少见了,指向异常处理的指令,现在已经由异常表代替)

    2.操作数栈:当虚拟机执行一些指令的时候会对操作数栈进行入栈或出栈的操作,比如iadd指令将两个数相加,会先将操作数栈中的两个数弹出来(出栈),相加后再压入栈(入栈)中。

    3.动态链接:在运行时常量池中存储了诸如类名,方法名,我们要找到目标类,执行相应的方法就需要用到动态链接,栈帧中有一个指向运行时常量池的引用,通过这个引用可以找到相应的类名和方法名,但是光知道名称是没法执行方法的,需要通过名称找到相应的类和方法在内存中的地址,这个过程就是动态链接。

    4.方法返回地址:当方法执行完以后如果有返回值,就会把这个返回值返回给该方法的调用者,方法的返回就是我们java中用到的return命令。方法返回之后调用者需要继续往下执行就需要知道要执行的地址,该地址就是方法返回地址,它被记录在了栈帧中,当然在发生异常的情况下不会有返回值,要继续执行的地址可以通过异常处理器表来确定。

    虚拟机栈可能出现两种类型的异常:

    1.线程请求的栈深度大于虚拟机允许的栈深度会抛出StackOverflowError,(虚拟机栈空间不能动态扩展的情况下)

    2.如果虚拟机栈空间可以动态扩展(目前多数的虚拟机都可以),当动态扩展无法申请到足够的空间时会抛出OutOfMemory异常。

    三:本地方法栈:本地方法栈与虚拟机栈的作用是一样的,区别在于虚拟机栈为虚拟机执行java方法服务,而本地方法栈为虚拟机执行native方法服务,native方法为本地方法,不是用java语言写的有可能是c或者c++写的,在jdk中就有很多c的代码,就是提供给本地方法来调用的。

    四:堆:通常我们把jvm的内存粗略的分为堆和栈,其中的堆就是指它,它是虚拟机中占用内存最大的一块,是被所有线程共享的一块区域,它是用来存放对象实例的。是垃圾收集器管理的主要区域。

    五:方法区:方法区也是被所有线程共享的一块区域,它存储的是类信息,常量,静态变量,编译后的字节码等信息。方法区中还有一块区域“运行时常量池“:运行时常量池中存储的是编译期生成的各种字面量和符号引用。字面量相当于Java里常量的概念,比如字符串,声明为final的常量值等,符号引用包括了:类和接口名,字段名,方法名。

    看完上述内容,你们对jvm的内存结构有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读。

    展开全文
  • 电脑内存分类种,有那些牌子?

    千次阅读 2021-07-27 02:28:24
    分类:1、DDR3内存有一下种:DDR3 1066、1333、1600、1800、2000。核心频率分别为133MHz、166MHZ、200MHz、225MHz、250MHz、时钟频率分别为533MHz、661MHz、800MHz、900MHz、1000MHz,等效频率分别为:1066 MHz, ...

    分类:

    1、DDR3内存有一下几种:DDR3 1066、1333、1600、1800、2000。核心频率分别为133

    MHz、166MHZ、200MHz、225MHz、250MHz、时钟频率分别为533MHz、661MHz、800MHz、900MHz、1000MHz,等效频率分别为:

    1066 MHz, 1333 MHz, 1600 MHz, 1800 MHz,2000 MHz。单根DDR3内存的数据传输带宽最高为2000 MHz × 64

    bit÷ 8 -16 GB/s。

    2、DDR4内存的标准规范仍未最终定夺。三星这条样品属于UDIMM类型,容量为2GB,运行电压只有1.2V,工作频率为2133MHz,而且凭借新的电路架构最高可以达到3200MHz。相比之下,DDR3内存的标准频率最高仅为1600MHz,运行电压一般为1.5V,节能版也有1.35V。仅此一点,DDR4内存就可以节能最多40%。

    内存的牌子有:金士顿、三星、威刚、美尔兰、金士泰、影驰、镁光。

    1、市场份额不过21.3%,不足金士顿的三分之一,可见金士顿的实力。价格方面,2018年上半年内存现货价格居于高水位,甚至高出合约价20%,下半年因库存积压开始降价,但是内存条厂商的利润空间仍然十分丰厚。

    2、影驰主要的技术是再显卡上面,硬盘和内存的技术还没有金士顿好,但是相对来说比起其他杂牌内存产商还是比较稳定的,美尔兰的内存是在价格上比较便宜但是性能和上机的稳定性还是有待提升。

    展开全文
  • 内存分类

    千次阅读 2019-04-25 10:35:37
    1、概述 ROM(read only memory)和RAM(random access memory)都...典型RAM就是计算机的内存。 2、RAM分类 RAM分为两大类,一种称为静态RAM(static RAM / SRAM)。 一种称为动态RAM(Dynamic RAM / DRAM)。 ...
  • c++内存到底分几个区

    2011-11-08 13:41:04
    c++内存到底分几个区c++内存到底分几个区
  • 关于内存分类,有一篇关于C++的,讲得很详细,但哪位大神给介绍一下C#的呢,也是五部分吗?
  • 2.堆(Heap):凡是new出来的东西,都在堆内存当中。(包括引用类型) 1.堆内存里面的东西都有一个地址值:16进制 堆内存里面的数据,都有默认值。规则: 如果是整数类型,那么默认为0; 如果是浮点类型,那么默认为...
  • 内存分为几部分?堆与栈的区别

    千次阅读 2018-01-24 15:45:44
    五大内存分区  在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。  栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部...
  • JVM 内存空间分为几部分

    千次阅读 2016-09-01 10:33:56
    内存空间分几部分:代码段、数据段,栈,堆 (收集整理) 1.函数代码存放在代码段。声明的类如果从未使用,则在编译时,会优化掉,其成员函数不占代码段空间。 全局变量或静态变量,放在数据段, 局部变量放在栈中...
  • 内存到底分几个区

    千次阅读 2017-12-25 10:11:50
    作为程序员,我们总希望自己编写的代码是可控的,是在自己的意愿下执行和实现功能的,所以这要求我们在进行C/C++编程时,对内存的了解比较精准,经常需要操作的内存分为以下个类别: =====================...
  • JVM内存区域分为五个部分,分别是堆,方法区,虚拟机栈,本地方法栈,程序计数器。 堆。 堆是Java对象的存储区域,任何用new字段分配的Java对象实例和数组,都被分配在堆上,Java堆可使用-Xms -Xmx进行内存控制,...
  • Java虚拟机主要分为以下个区: 方法区 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载 方法区主要用来存储已被虚拟机加载的类的...
  • 一、五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部...
  • 第一个问题:内存条怎么看?查看电脑内存其实方法很多也非常简单,相信大家一次看一遍就能学会了!第一种方法:我们只需要鼠标右键点“计算机”图标,选择--属性 选项中就可以看到电脑内存信息了。如下图:我们可以...
  • 电脑内存分为哪两种

    千次阅读 2021-07-24 02:57:41
    电脑内存分为ROM和RAM两种,RAM、ROM都是数据存储器,RAM 是随机存取存储器,它的特点是易挥发性,即掉电失忆,ROM通常指固化存储器,它的特点与RAM相反。电脑内存分为ROM和RAM两种。1、只读存储器的特点是只能读出...
  • 主要从以下几部分来说明,关于内存内存泄露、溢出的概念,区分内存泄露和内存溢出;内存的区域划分,了解GC回收机制;重点关注如何去监控和发现内存问题;此外分析出问题还要如何解决内存问题。下面就开始本篇的...
  • jvm堆内存代划分

    2022-01-12 10:06:52
    基于代的思想是:jvm在每一次执行垃圾收集器时,只是对一小部分内存对象引用进行检查,这一小部分对象的生命周期也更短,从而加快了垃圾收集的性能。下面我们将来介绍java中的基于代的内存回收算法的基本策略: 1...
  • Java的内存需要划分成为5个部分: 1.栈(Stack) :存放的都是方法中的局部变量。方法的运行-定要在栈当中运行。 局部变量:方法的参数,或者是方法{}内部的变量 作用域:一旦超出作用域,立刻从栈内存当中消失。 2.堆...
  • linux进程内存空间分为个段?

    千次阅读 2017-08-03 14:35:40
    Linux的内存空间简单可以分为5个部分:  Text(代码区):存放可执行的指令操作,其只读不能写  Bss(静态区or全局区):存放未初始化的全局变量和静态变量  Data(数据区):存放初始化的全局变量和静态...
  • C++编译程序占用内存分为几部分

    千次阅读 2014-06-13 11:48:24
    一个由 C/C++ 编译的程序占用的内存分为以下部分  1 、栈区( stack ) — 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈  2 、堆区( heap ) —...
  • JVM内存分为几部分?各个部分的作用是什么? 1. Java虚拟机内存的五大区域Java的运行离不开Java虚拟机的支持,今天我就跟大家探讨一下Java虚拟机的一些基础...
  • 内存类型有哪些

    千次阅读 2021-07-25 01:04:00
    内存大家都了解,那么,内存种类型呢?大家都不是很清楚吧,没关系,学习啦小编在这里给大家讲述内存有什么类型。服务器内存服务器是企业信息系统的核心,因此对内存的可靠性非常敏感。服务器上运行着企业的...
  • C/C++ 的内存分几部分啊?堆、栈、静态存储区,还有别的没?每部分的具体作用是什么?
  • RFID标签内存分4个独立的存储区块
  • 那么电脑能装内存条呢?一般来说是2个,但也有部分电脑可以装4个。接下来小编就给大家分享一下有关内容。具体如下:1、首先你要查看你的原先内存条的型号、代数。现在在内存分DDR、DDR2、DDR3的代数。如果你购买...
  • 根据电脑内存的大小和特性,可分为下面种:a、电脑内存小于256M,其虚拟内存应设置为物理内存的2倍b、电脑内存大于256M,其虚拟内存应设置为物理内存的1.5倍c、电脑内存大于512M小于1G的,其物理内存以可以满...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,533,328
精华内容 613,331
关键字:

内存分为几部分