jvm的内存划分区域

这篇具有很好参考价值的文章主要介绍了jvm的内存划分区域。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

jvm划分5个区域:

java虚拟机栈、本地方法栈、堆、程序计数器、方法区。

jvm的内存划分区域,java面试题,jvm,java 

 

各个区各自的作用:

1.本地方法栈:用于管理本地方法的调用,里面并没有我们写的代码逻辑,其由native修饰,由 C 语言实现。
2.程序计数器:它是一块很小的内存空间,主要用来记录各个线程执行的字节码的地址,例如,分支、循环、线程恢复等都依赖于计数器。
3.方法区(Java8叫元空间):用于存放已被虚拟机加载的类信息,常量,静态变量等数据。
4.Java 虚拟机栈:用于存储局部变量表、操作数栈、动态链接、方法出口等信息。(栈里面存的是地址,实际指向的是堆里面的对象)
5.堆:Java 虚拟机中内存最大的一块,是被所有线程共享的,几乎所有的对象实例都在这里分配内存; 

哪些是线程私有、公有的

a.线程私有:每个线程在开辟、运行的过程中会单独创建这样的一份内存,有多少个线程可能有多少个内存,Java虚拟机栈、本地方法栈、程序计数器是线程私有的
b.线程全局共享的堆和方法区 

GC调用时机 

栈虽然方法运行完毕了之后被清空了,但是堆上面的还没有被清空,所以引出了GC(垃圾回收),不能立马删除,因为不知道是否还有其它的也是引用了当前的地址来访问的 文章来源地址https://www.toymoban.com/news/detail-670384.html

到了这里,关于jvm的内存划分区域的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JVM | Java内存区域

    以上笔记基于JavaGuide整理 JDK 1.8: 线程私有 的:程序计数器,虚拟机栈,本地方法栈 线程共享 的:堆,方法区(元空间),直接内存 (非运行时数据区的一部分) 程序计数器有两个作用: 字节码解释器通过改变程序计数器来依次读取指令,从而 实现代码的流程控制 ,如:顺

    2024年02月08日
    浏览(82)
  • JVM——Java 内存区域详解

    如果没有特殊说明,都是针对的是 HotSpot 虚拟机。 基本问题 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题 String 类和常量池 8 种基本

    2024年02月13日
    浏览(43)
  • 深入理解 JVM 之——Java 内存区域与溢出异常

    更好的阅读体验 huge{color{red}{更好的阅读体验}} 更好的阅读体验 本篇为深入理解 Java 虚拟机第二章内容,推荐在学习前先掌握基础的 Linux 操作、编译原理、计算机组成原理等计算机基础以及扎实的 C/C++ 功底。 该系列的 GitHub 仓库:https://github.com/Doge2077/learn-jvm Java 虚拟机在

    2024年02月09日
    浏览(64)
  • JVM零基础到高级实战之Java内存区域本地方法栈

    JVM零基础到高级实战之Java内存区域本地方法栈 JVM零基础到高级实战之Java内存区域本地方法栈 本地方法栈是什么? 用于作用域本地方法执行的一块Java内存区域 为什么要有本地方法栈? 与Java虚拟机栈相同,每个方法在执行的同时都会创建一个栈帧(Stack Framel)用于存储局部

    2024年02月09日
    浏览(42)
  • C代码内存区域划分

    1、初始化不为零的(全局变量、静态全局变量和静态局部变量)放在.data段 2、初始化为0,和未初始化的(全局变量、静态全局变量和静态局部变量)放在.bss 3、编译阶段未初始化的全局变量放在COM块,因为未初始化的全局变量为弱符号,要经过强弱符号的选择之后,才能确

    2024年02月06日
    浏览(38)
  • java八股文面试[JVM]——JVM内存结构

    参考: JVM学习笔记(一)_卷心菜不卷Iris的博客-CSDN博客 JVM 是运行在操作系统之上的,它与硬件没有直接的交互 JVM内存结构:   方法区:存储已被虚拟机加载的类元数据信息(元空间) 堆:存放对象实例,几乎所有的对象实例都在这里分配内存 虚拟机栈:虚拟机栈描述的是

    2024年02月12日
    浏览(47)
  • jvm对象内存划分

    jvm内存空间是逻辑上连续的虚拟地址空间(虚拟内存中的概念)映射到物理内存(不一定连续),物理内存不足时还会将物理内存中的数据交换到swap(磁盘的一块区域)。 这块水有点深,查阅资料做了个个人的总结。 内存划分,有 指针碰撞 和 空闲列表 这两种划分方式: 1、

    2024年02月07日
    浏览(46)
  • 3.Java面试题—JVM基础、内存管理、垃圾回收、JVM 调优

    一篇文章掌握整个JVM,JVM超详细解析!!! JVM (Java虚拟机) 是运行 Java 字节码 的 虚拟机 。 JVM 针对 不同系统 有 特定实现 ( Windows 、 Linux 等),目的是 同样的代码 在 不同平台 能运行出 相同的结果 。 Java 语言 要经过 编译 和 解释 两个步骤: 编译 :通过 编译器 将 代码 一

    2024年02月15日
    浏览(50)
  • 【JVM】JVM五大内存区域介绍

    目录  一、程序计数器(线程私有) 二、java虚拟机栈(线程私有) 2.1、虚拟机栈 2.2、栈相关测试 2.2.1、栈溢出 三、本地方法栈(线程私有) 四、java堆(线程共享) 五、方法区(线程共享) 六、实例演示         Java虚拟机在执行Java程序的过程中会把它所管理的内存划

    2024年02月15日
    浏览(43)
  • JVM内存区域

    为了更好的理解类加载和垃圾回收,先要了解一下JVM的内存区域(如果没有特殊说明,都是针对的是 HotSpot 虚拟机。)。 Java 源代码文件经过编译器编译后生成字节码文件,然后交给 JVM 的类加载器,加载完毕后,交给执行引擎执行。在整个执行的过程中,JVM 会用一块空间来

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包