APP下载
报价宝  ›  科技  › 

Jvm内存划分

报价宝 来源:baojiabao.com 发布时间:2019-10-31 05:55:00 09月10日更新
报价宝综合消息Jvm内存划分

在Java开发中我们不用考虑对内存的管理,是因为Jvm帮我们做了很多工作。Jvm为了满足不同的用途将内存大体划分了下面几部分。如下图:

下面我们详细介绍一下每一块的具体的功能。

程式计数器:指的是当前执行绪所执行的字节码的行号指示器。也就是说它的作用是通过这个计数器的值来选择执行哪些字节码指令的。我们知道在多工的系统中虽然可以同时执行很多程式,但执行的本质是CPU给不同的程式分配执行时间来决定的。如果我们启动了一个Java程式假如是单执行绪的,虽然程式启动了但CPU此时却可能执行其它程式,那么在CPU重新执行Java程式时,一定要知道这个程式上一次执行到了哪里,然后好继续这个指定往下执行,这个计数器就是记录程式的执行行号的。只不过不同的是,这个计数器不是针对程式来说的,而是真对执行绪来说的,因为每一个执行绪可能执行的逻辑是不一样的,所以Jvm就要知道每一个执行绪在上一次的执行位置。所以程式计数器,每一个执行绪都是独立的。如果执行绪执行的是一个Java方法,那么这个计数器 就记录正在执行的虚拟机器的字节码指令地址。如果执行的方法是Native方法,那么这个计数器的值就为空。栈:主要储存区域性变量表、动态连结、方法出口等资讯。并且栈也是每一个执行绪独立存在的。堆:Jvm中管理内存的最大的地方。它的作用是储存物件的例项。我们可以通过设定-Xmx和-Xms控制堆大小。堆也是Jvm中垃圾回收器回收的主要地方。并且堆内存是所有执行绪所共享的区域。方法区:和堆一样也是所有执行绪共享的内存区域,不同是的是它主要储存被虚拟机器载入的类资讯、常量、静态变数等资讯。执行时常量池:常量池存放在方法区中,主要储存编译时生成的字面量和符号引用。因为常量池存放在方法区中,所以常量池也是对所有执行绪都共享的。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 汽车价格 电视机价格 华为手机价格 红米手机价格