Java-JVM复习02-运行时数据区

基于IDEA 2022.2.3安装Lombok插件(方法适用于IDEA2021及之后版本) 针对IDEA2021及之后版本无法安装Lombok插件的解决方案 阅读详情

1. 运行时数据区结构

在这里插入图片描述

在这里插入图片描述

线程

  • JVM每个线程都与操作系统的本地线程直接映射,Java线程终止,本地线程回收
  • JVM启动后自动创建多个后台线程,虚拟机线程、周期任务线程、GC线程、编译线程、信号调度线程
  • 多个线程共享堆区、元数据区的数据,每个线程私有本地方法栈、虚拟机栈、程序计数器的数据

2. 程序计数器

  • JVM中的程序计数器是对物理PC寄存器的一种抽象模拟
  • 线程私有,每个线程都有自己的程序计数器
  • 存储当前线程当前方法的指令地址,由执行引擎读取后选出需要解释的字节码
  • 并发时线程之间要快速切换,程序计数器存储的指令地址也就可做作为当前线程时间片结束时的位置标记,以便线程切换回来后从正确位置继续执行下一条指令
  • 程序计数器不使用垃圾回收,也不会内存溢出

3. 虚拟机栈

在这里插入图片描述

  • 线程私有,每个线程都有自己的虚拟机栈,因此仅有局部变量没有成员变量的无状态对象,一定是线程安全的
  • 栈的单位是栈帧,线程中每一个方法的调用和执行完成过程都对应一个栈帧的入栈和出栈过程,即栈帧随方法的调用而创建,随方法的结束而销毁
  • 当前方法中return返回或出现未处理异常都会弹出当前栈帧
  • 虚拟机栈不使用垃圾回收,但可能内存溢出

虚拟机栈存储大小设置

在这里插入图片描述
栈帧

  • 局部变量表(数组):存储当前方法的参数和局部变量
  • 操作数栈(数组):方法执行过程中,根据字节码指令,对数据进行入栈或出栈

在这里插入图片描述

  • 动态链接:在栈帧中存储了一个指向运行时常量池中所属方法的引用
  • 返回地址:存放调用当前方法的程序计数器的值(即return前的数),以便正确返回到该方法被调用时的位置,从而继续执行其他方法

4. 本地方法栈

本地方法区和 Java Stack 作用类似, 区别是虚拟机栈为执行 Java 方法服务, 而本地方法栈则为 Native 方法服务, HotSpot 直接把本地方法栈和虚拟机栈合二为一了

5. 堆

堆初始内存和最大内存设置

在这里插入图片描述

新生代和老年代

  • Young区(占1/3堆内存):Eden(8)+ Survivor0(1)+ Survivor1(1)
  • Old区(占2/3堆内存):存放多次GC后仍存活的和Young区仍放不下的对象

MinorGC 的过程
在这里插入图片描述
在这里插入图片描述

堆中的对象实例
在这里插入图片描述

6. 方法区(jdk1.7永久代,jdk1.8元空间)

用于存储类信息、常量、静态变量、即时编译器编译后的代码缓存等数据

元空间初始内存大小设置(默认大小21m,最大为操作系统本地内存大小)

在这里插入图片描述

类信息

  • 类型信息:类的修饰符、类的全名、父类的全名、所实现接口的有序表
  • 成员信息:成员变量的名称、类型、修饰符
  • 方法信息:方法名、返回类型、修饰符、参数的数量和类型、字节码、异常表

常量池(.class字节码文件)和运行时常量池(方法区)

  • 字节码文件里的常量池,存放字面量符号引用,可以看做一张表,字节码指令根据这张表找到要执行的类里的所有信息
  • 字节码文件的常量池被JVM加载后转化为方法区中的运行时常量池
  • 运行时常量池存放了字面量真实地址,具有动态性
  • 字符串常量池、静态变量保存在堆

方法区的垃圾回收

  • 废弃的常量,即该常量没有被任何地方引用时就可以被回收
  • 不再使用的类型
Coursera | 离散数学概论(北大)| quiz答案 Coursera离散数学概论quiz答案Week1:数理逻辑:基本概念Week2:数理逻辑:命题逻辑及形式系统Week3:数理逻辑:谓词逻辑及形式系统Week4:集合论:集合代数   先放下Coursera上找的离散数学部分相关课程:   btw.线上学习拿证书还有很多,MOOC、edm等都可。   博主选了北京大学离散数学概论Discrete Mathematics Generality。Mooc上貌似也有,但是上课间貌似不如Coursera灵活,Coursera间自己调度,规定间上完即可。目前课 阅读详情

相关推荐

Silvaco TCAD仿真例库——肖特基二极管正向特性(例子)

此示例演示了肖特基二极管正向特性的仿真。 展示了: 使用 Atlas 语法形成二极管结构 设置阳极的肖特基势垒高度 正向偏置阳极 代码 第一部分:描述设备 mesh(网格) electrodes locations(电极位置) doping distribution(掺杂分布) 这是位于结构左侧和右侧的,2维n型器件,具有重掺杂浮动 p 型保护环区域, (2D n-type device with heavily doped floating p-type guard ring regio.

weixin_41788560的博客 2万+

2020年IntelliJ IDEA lombok插件的安装和使用

2020年IntelliJ IDEA lombok插件的安装和使用 首先我们需要安装IntelliJ IDEA中的lombok插件,打开IntelliJ IDEA后点击菜单栏中的File–>Settings,或者使用快捷键Ctrl+Alt+S进入到设置页面。 我们点击设置中的Plugins进行插件的安装,在右侧选择Browse repositories…,然后在搜索页面输入lombok变可以查询到下方的Lombok Plugin,鼠标点击Lombok Plugin可在右侧看到Install按钮,点击

MyNameYuan的博客 9024

四轴立式A轴支持M11-10松开锁紧代码后处理2019.8.7.zip

UGNX软件四轴后处理,发那科,新代,三菱系统适用,四轴在右边,往外是正适用,带松开锁紧代码,立式加工中心,自动换刀

IntelliJ IDEA 2020.1.4 版本lombok插件安装问题

在项目学习的过程中,需要使用lombok插件简化开发,根据教程在File->Settings->Plugins查询,发现因为版本问题查询不到lombok插件。选择在官网下载的压缩包导入,然后选择lombok点击Restart就可完成安装,最后使用需要通过Maven导入依赖。找到对应IDEA版本的压缩包下载,版本一定要对应!2.将压缩包导入IDEA。

m0_63230435的博客 1398

2020.1.2idea安装lombok插件的过程

②去官网下载相应版本的lombok的插件:https://plugins.jetbrains.com/plugin/6317-lombok。即可以看到很多版本,找到与自己idea对应的版本,我的idea是2020.1,下载对应版本。首先查看一下自己idea的版本,下载对应的lombok插件的版本。嘿嘿,又解决一个小问题,虽然问题很小,但是我的兴趣越来越浓厚啦。①查看idea版本的方法:Help–about即可以查看版本。③下载完成后,setting–plugins–导入安装包。点击versions。

qq_67930923的博客 1424

JDK 1.8之后Perm Space有哪些变动? MetaSpace默认是无限的么? 还是你们会通过什么方式来指定大小?

JDK 1.8后用空间替代了 Perm Space;字符串常量存放到堆内存中。 MetaSpace大小默认没有限制,一般根据系统内存的大小JVM会动态改变此值。 -XX:MetaspaceSize:分配给类数据空间(以字节计)的初始大小(Oracle逻辑存储上的初始高水位,the initial high-water-mark)。此值为估计值,MetaspaceSize的值设置的过大会延长垃圾回收间。垃圾回收过后,引起下一次垃圾回收的类数据空间大小可能会变大。 -XX:MaxMetaspaceS

siyuanwai的博客 995

JVM 运行数据区

可以分为三层:1 JVM外部,从源文件到Class文件,再装载到JVM2 JVM运行数据区,相当于就是避风港、运行的大后方。给执行程序提供后勤。3 执行引擎层。和运行数据区交互,完成执行任务。

BedwarsXD的博客 1095

JVM(二)_运行数据区

运行数据区 我们知道内存是硬盘和CPU的桥梁,程序要从硬盘中加载到内存中变成进程才能获取到CPU资源。同理,字节码文件也要加载到内存中才能被CPU执行,JVM在内存中的布局称为运行数据区,其规定了Java运行过程中内存申请、分配、管理的策略,保证了JVM的高效运行,不同JVM的内存布局稍有差异,这里根据HotSpot虚拟机的来学习 运行数据区主要分为五个结构 方法区(Method Area) 堆区(Heap Area) 栈区(Stack Area) PC寄存器(PC Registers) 本地方

weixin_44568462的博客 1742

JVM复习——运行数据区

1.方法区 2.堆 3.程序计数器 4.虚拟机栈 4.1 栈帧 4.1 本地变量表 4.2 操作数栈 4.3 动态连接 4.4 方法返回地址 4.5 其他信息 5.本地方法栈

weixin_41070695的博客 393

JVM运行数据区

. 背景 编写本次 JVM 章程, 因没有找到合适及透明的文章讲解JVM,零一 下定决心既然没人做 从零到一的过程, 那我来做,编学边分享本次学习的过程, 先和同学们说一下本次JVM章程几乎全是概念,其实大家背下来理解即可,希望会对各位学习的童鞋们带来帮助 学会 : 看+记忆+练习+复习+练习+背下来 = 学会 注意 : 本次 HotSpot VM 讲解基于 JDK8 讲解,期间会进行与JDK6版本进行对比 公众号 : 倔强小狮子(最新发布) 二. 计划 第一章: 类加载器 第二章: 运行

braverlionet的博客 161

jvm总结一《浅析jvm运行数据区

本文讲解: JVM原理、 JVM运行数据区 、方法区 、堆区 、程序计数器、 本地方法栈、 虚拟机栈

有梦就有马 313

JVM运行数据区内部结构

对于jvm来说他的内部结构主要分成三个部分,分别是类加载阶段,运行数据区,以及垃圾回收区域,类加载我们放到之后来总结,今天先复习一下类运行区域首先这个区域主要是分成如下几个部分下面举个例子来解释一下。

qq_74042166的博客 593

JVM系列——运行数据区学习笔记

class文件——>ClassLoader SubSystem——>running data area ——>GC 本地方法栈、本地方法接口、本地方法库 虚拟机栈:方法1(栈帧1)、方法2(栈帧2) 方法区和堆是进程私有(95%是在堆区,5%是在方法区) 程序技术器,虚拟机栈,本地方法栈是线程私有 一个JVM实例对应一个运行数据区(一个Runtime对象) 线程: 线程是一个程序的运行,一个进程有多个线程, 每一个线程与操作系统的本地线程直接映射,当一个java线程准备

m0_51660523的博客 3209

jvm深入理解:运行数据区知识点梳理

2020年初,得知周志明老师出了深入理解java虚拟机第三版,之前一直听说这个系列的书籍是java中的圣经,所以买了本进行了研读,这里将重要知识点整理一下,再配合写一些自己的理解,以便以后的一个复习。 一、运行数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 1.1 程序计数器 占用内存小,字节码的行号指示器。 程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 线程私有。 ...

qq_26855461的博客 310

Java虚拟机,JVM八股文快速复习指南 [自用]

JVM八股快速复习

qq_48021139的博客 1560

IDEA之安装lombok

IDEA虽然有可以对Bean、Entry等类自动生成get、set、toString、equals和hashCode方法的快捷方式。 但当出现属性添加、修改或删除,需要重新生成或删除get/set等方法,给代码维护增加负担。 lombok这个插件可以给类里面的字段,自动的加上属性,构造器,ToString方法,Equals方法等等。 注意:这里使用的idea 2020.1.3的版本 File→Settings Plugins搜索lombok,点击install 安装后会弹出重启 安装完毕

jc_hook的博客 984

如何在新版IDEA中使用lombok插件

想要采用lombok简化开发,发现最新版idea中的插件市场没有lombok插件,解决方法如下:

曦煜墨白的博客 8489

【项目问题解决】IDEA2020.3 使用 lombok 插件 java: 找不到符号 符号: 方法 builder()

1.确认插件是否已正确安装:在使用 Lombok 注解之前,确保已经在你的开发环境中安装了 Lombok 插件。你可以在 IDEA 中打开“File”菜单,选择“Settings”->“Plugins”,查看是否已安装 Lombok 插件。如果没有安装,你需要手动安装。安装后需要重启 IDEA。确认项目是否已正确配置:在项目的构建配置文件中,比如 pom.xml(对于 Maven 项目)或 build.gradle(对于 Gradle 项目),确保已经添加了 Lombok 的依赖项。

qq_43238568的博客 2332

【2020】_ IntelliJ IDEA2020与lombok不兼容_【已解决】_Plugin Error: Plugin "Lombok" is incompatible

问题:Plugin Error: Plugin "Lombok" is incompatible IntelliJ IDEA更新到2020.1版本后出现Lombok插件不兼容问题 如图: 解决方案: 去idea插件官网下载0.29-EAP版本Lombok 1.1、jetbrains官网lombok插件页面: https://plugins.jetbrains.com/plugin...

任秋晓 1万+

lombok的使用

Lombok:作用:可以在实体类上面使用@Getter注解用于自动生成 1. 导入坐标 org.projectlombok lombok 1.16.22 2.在idea添加插件 3.重启idea 重启idea 4.使用 @Data 自动为已有字段生成get,set,equal…所有方法 @Getter 为所有已有字段生成get方法 @Setter 为所有已有字段生成...

m0_37749781的博客 245

Idea中找不到Lombok/小辣椒插件

第七步:重启之后,重新打开settings,打开插件之后再找到Plugins之后搜索Lombok就发现有了Lombokle。第二步:找到Lombok。

RmccO的博客 2718
上一篇: Java-JVM复习01-类加载机制
下一篇: Java-JVM复习03-GC
codfishXY
博客等级 码龄9年 24粉丝 54原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值