当前位置: 首页 > news >正文

JVM——Java虚拟机内存初识(面经篇之JVM内存)

网上说的太详细了,真不利于我的初识和记忆, 例如:堆区的young, old,讲了一大堆,结果,我连这些区域是干什么的都不知道,存储什么的都不知道, 害得是我自己总结:

  1. 堆(Heap)

    • 用途:堆是Java虚拟机管理的内存中最大的一块,用于存放所有Java对象和数组的实例。当一个对象被创建时,它的实例将被分配在堆上。
    • 特点:堆是所有线程共享的区域,垃圾回收器(GC?这个还没学到,后续补充  todo)会自动管理堆上的内存,回收不再使用的对象。
  • 存储:存储所有类的实例(对象)。存储数组。
  1. 方法区(Method Area)

    • 用途:方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
    • 特点:方法区也是线程共享的区域,它在虚拟机启动时创建。Java 8中,方法区的概念被“元空间”(Metaspace)所取代,元空间使用的是本地内存。
  • 存储:类的信息(包括类名、父类名、实现的接口等)。常量池。静态变量。即时编译后的代码。
  1. 虚拟机栈(Java Virtual Machine Stack)

    • 用途:虚拟机栈是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
    • 特点:每个线程都有一个独立的虚拟机栈,当线程调用方法时,会为该方法创建一个新的栈帧,当方法执行完毕后,该栈帧被销毁。
  • 存储:局部变量表(Local variables)。操作数栈(Operand stack)。

动态链接信息(Dynamic link information)。方法返回地址(Return address for methods)。

  1. 本地方法栈(Native Method Stack)

    • 用途:本地方法栈与虚拟机栈类似,但它是为虚拟机使用到的Native方法服务的。如果应用程序不使用Native方法,那么虚拟机就不需要实现本地方法栈。
    • 特点:本地方法栈也是线程私有的,它的生命周期与线程相同。
  • 存储:与虚拟机栈类似,但为本地方法服务。存储本地方法调用的相关信息。
  1. 程序计数器(Program Counter Register)

    • 用途:程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。
    • 特点:每个线程都有一个独立的程序计数器,是线程私有的内存区域。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 240414 类和对象
  • rancher搭建k8s及jenkins自动化部署
  • 【nginx】
  • Python中的装饰器及其应用场景
  • chrome 插件开发入门
  • C语言-第六章-加餐:其他自定义类型
  • C语言第一周课
  • 用RPC Performance Inspector 优化你的区块链
  • java设计模式day02--(创建型模式:工厂模式、原型模式、建造者模式)
  • 【AIGC半月报】AIGC大模型启元:2024.09(上)
  • 探究零工市场小程序如何改变传统兼职模式
  • vscode安装使用plantuml插件
  • 集成电路学习:什么是SDK软件开发工具包
  • vivado 添加多循环路径
  • 滑动窗口——632. 最小区间
  • 【mysql】环境安装、服务启动、密码设置
  • CentOS7简单部署NFS
  • css系列之关于字体的事
  • Elasticsearch 参考指南(升级前重新索引)
  • JAVA_NIO系列——Channel和Buffer详解
  • JS笔记四:作用域、变量(函数)提升
  • Mocha测试初探
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • nodejs调试方法
  • Octave 入门
  • Sublime Text 2/3 绑定Eclipse快捷键
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 工作手记之html2canvas使用概述
  • 前端设计模式
  • 如何设计一个比特币钱包服务
  • 正则表达式
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​Java基础复习笔记 第16章:网络编程
  • ​渐进式Web应用PWA的未来
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # linux 中使用 visudo 命令,怎么保存退出?
  • #Linux(make工具和makefile文件以及makefile语法)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2015)JS ES6 必知的十个 特性
  • (LeetCode C++)盛最多水的容器
  • (WSI分类)WSI分类文献小综述 2024
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)springboot教学评价 毕业设计 641310
  • (算法)N皇后问题
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ./configure、make、make install 命令
  • .apk 成为历史!
  • .Net 4.0并行库实用性演练
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net core 连接数据库,通过数据库生成Modell
  • .NET WPF 抖动动画
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试