码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JVM面试题:(二)内存结构和内存溢出、方法区的两种实现


    内存结构:

    在这里插入图片描述
    方法区和对是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行是线程私有
    的内存区域。

    Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内
    存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实
    例都在这里分配内存。

    方法区(Method Area),方法区(Method Area)与Java堆一样,是各个线程共享的内存区
    域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数
    据。

    程序计数器(Program Counter Register),程序计数器(Program Counter Register)是一块
    较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。

    JVM栈(JVM Stacks),与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stacks)也是
    线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方
    法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机
    栈中从入栈到出栈的过程。

    本地方法栈(Native Method Stacks),本地方法栈(Native Method Stacks)与虚拟机栈所发
    挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服
    务,而本地方法栈则是为虚拟机使用到的Native方法服务。

    内存溢出发生的区域:

    堆、栈、方法区都有可能发生内存溢出
    在这里插入图片描述

    方法区:

    在jdk1.8之前是永久代,1.8之后是元空间
    在这里插入图片描述
    永久代的方法区,和堆使用的物理内存是连续的。
    法区存在于元空间(Metaspace)。物理内存不再与堆连续,而是直接存在于本地
    内存中,理论上机器「内存有多大,元空间就有多大」。

    表面上看是为了避免OOM异常。因为通常使用PermSize和MaxPermSize设置永久代的大小就
    决定了永久代的上限,但是不是总能知道应该设置为多大合适, 如果使用默认值很容易遇到
    OOM错误。当使用元空间时,可以加载多少类的元数据就不再由MaxPermSize控制, 而由系统
    的实际可用空间来控制啦。

  • 相关阅读:
    数据结构与算法------二叉树
    前AMD芯片架构师吐槽,取消 K12 处理器项目是因为 AMD 怂了!
    如何构建一篇高分IB数学IA?
    软件测试面试常见问题及答案(发散思维、接口、性能、概念、)
    前端如何去除本地版本号缓存
    Qt5开发从入门到精通——第十一篇二节(Qt5 事件处理及实例——键盘事件及实例)
    java计算机毕业设计物流信息管理系统录像演示源码+系统+数据库+lw文档+mybatis+运行部署
    腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例
    Meta官方吐槽大会?Connect 2022卡马克演讲全文回顾
    【UCIe】UCIe 数据完整性
  • 原文地址:https://blog.csdn.net/weixin_42774617/article/details/133756841
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号