JVM原理与实战

article/2025/8/19 23:01:23

JVM原理

    • 类加载流程和内存分配
    • 栈帧操作
    • 一、JVM垃圾回收算法
      • 主动加载的几种方式?
      • 符号引用和直接引用
      • 1.1 什么是垃圾(Garbage Collection)回收?
      • 1.2 引用计数法(Reference Conting)
      • 1.3 标记清除法 *(Mark - Sweep)
      • 1.4 复制算法 *(Copying)
        • 1.4.1 复制算法在JVM中的应用
      • 1.5 标记压缩法 *(Mark - Compact)
      • 1.6 分代算法
      • 1.7 分区算法
    • 二、JVM垃圾收集器
      • 2.1 串行回收器
        • Serial
      • 2.2 并行回收器
        • ParNew & ParallelGC & ParallelOldGC
        • CMS
        • JVM参数
      • 2.3 G1的GC收集过程
        • 新生代GC
        • 并发标记周期
        • 混合收集
    • 三、JVM常用参数
    • 四、JVM监控优化
      • 性能监控工具
      • Linux
        • top命令(常用)
        • vmstat命令
        • iostat命令
      • JDK
        • jps(常用)
        • jstat
        • jinfo
        • jmap(常用)
        • jhat
        • jstack(常用)
        • jcmd

类加载流程和内存分配

在这里插入图片描述
堆内存= Eden内存 + S0/S1内存 + 老年代内存

新生代中有90%的使用中,其余的10%是空闲的。

栈帧操作

在这里插入图片描述
针对Java中的方法引入了栈帧的概念。

方法执行的过程对应入栈和出栈的过程。

栈帧遵循先入后出的规则。

栈帧包括:局部变量表、操作数栈、帧数据区。

一、JVM垃圾回收算法

主动加载的几种方式?

  • Student stu = new Student();
  • 反射的方式
  • 克隆clone
  • 子类初始化的时候,父类会被优先初始化。
  • 调用静态的方法 static

符号引用和直接引用

使用命令查看 ( javap -V 类名 )

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;import java.io.Serializable;@TableName("my_user")
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class UserEntity implements Serializable {@TableId(type = IdType.AUTO, value = "id")private int id; // 数据库Id@TableField(value = "user_name")private String userName; // 账号@TableField(value = "pass_word")private String passWord; // 密码}

使用命令 : javap -v UserEntity.class

    #1 = Fieldref           #4.#79        // com/miyuan/wm/pojo/UserEntity.id:I

http://chatgpt.dhexx.cn/article/wQsrdDC7.shtml

相关文章

jvm原理与性能调优

文章目录 一、JVM内存结构 1.运行时数据区 2.直接内存 二、JVM中的对象 1.对象的创建 2.对象的内存布局 3.对象的访问定位 三、垃圾回收算法和垃圾回收器 1. 如何判断对象是已死 2.分代回收理论 3.垃圾回收算法 4.垃圾收集器 四、JVM执行子系统 1.Class文件结构 2.类加载机制 3…

什么是JVM?深入解析JVM原理!

一、JVM是什么? JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在J…

全面阐述JVM原理

一 JVM入门 1. 什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码…

JVM原理

JVM原理 一.jvm简介 JVM是Java Virual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,他是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组…

JVM原理详解

主题内容: 1.JVM 内存区域概览 2.堆区的空间分配是怎么样?堆溢出的演示 3.创建一个新对象内存是怎么分配的? 4.方法区 到 Metaspace 元空间 5.栈帧是什么?栈帧里有什么?怎么理解? 6.本地方法栈 7.程序…

JVM的运行原理

目录 1.概念 2.JVM运行机制 3.JVM执行流程 4.JVM运行时数据区 什么是线程私有? OOM(内存溢出) 4.1 堆:也叫运行时数据区,线程共享 4.2 方法区:线程共享 4.3 Java虚拟机栈:线程私有,描…

JVM的原理

JVM原理(一) 1、JVM总体结构图 2、JVM堆结构图以及分代 复制算法: 1、新生成的对象存放在Eden区和from区 2、当Eden区内存不够,虚拟机将发起一次MinorGC 3、GC进行时,Eden区中所有存活的对象都会被复制到to区 4、年龄阀值达到15的会被放到老年…

JAVA虚拟机JVM工作原理

提起JAVA,都知道它有个虚拟机,因此可以跨平台,一次编写,到处运行。但具体原理是咋样的?身为JAVA小白,岂可不知! 一、原理 二、结构 1、类加载器 2、执行引擎 3、运行时数据区域一、原理 JVM实现…

JVM 运行机制及其原理

最近出去面试,总被问到Java JVM相关的东西,什么JVM的内存模型、JVM的内存分配、内存回收、内存回收算法…搞得我一头雾水,早些年还看过一些,蹭着有时间给大家也给自己总结下JVM相关的知识。 JVM JVM是Java Virtual Machine&…

JVM原理-超详细总结

JVM概念 JVM是java的核心和基础在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经…

2022年iOS最新面试(底层基础)问题答案

文章目录 Runloop 1、RunLoop 的本质是什么?2、Runloop和线程是什么关系?3、Runloop的底层数据结构是什么样的?有几种 运行模式(mode)?每个运行模式下面的 CFRunloopMode 是哪些?他们分别是什么…

2019年面试必备:iOS 面试题大全(附答案)

这个栏目将持续更新–请iOS的小伙伴关注! 1、多线程的应用 2、GCD实现多个请求都完成之后返回结果 3、A、B两个int数组,得到A数组中B数组不包含的元素 4、事件传递链,页面上一个按钮,按钮和它的superView有一样的action,为什么只执行button的…

iOS 多线程面试题

没有比这里更全的了,看我就好了 面试官😃 :你了解进程吗?谈谈你对进程和线程的理解? 不谈进程,线程无从谈起。要了解什么是线程,我们先需要理解什么是线程。 秒懂百科 😃 以上百科&…

2020,300道高级iOS开发面试题(最新整理)

这个栏目将持续更新–请iOS的小伙伴关注! 一:知名大厂iOS开发面试题篇 1、腾讯—最新iOS面试题总结 2、百度—最新iOS面试题总结 3、头条—最新iOS面试题总结 4、阿里—最新iOS面试题总结 5、美团—最新iOS面试题总结 6、某大厂—最新iOS面试题总结 7、抖音–最新i…

iOS经典面试题大全

1.INTERVIEW 共勉 作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 与2800i…

2021年,整理的iOS高频面试题及答案(总会有你需要的)

推荐阅读:关于iOS面试题汇总(栏目持续更新) 各位最近应该忙于跳槽与面试吧,毕竟金三银四,珍惜好机会,预祝大家面试顺利通过,迎接大厂offer。有需要资料可以私聊我了解 从输入url到页面展示到底发生了什么 1、输入地…

iOS面试题 2016版

2015-1-3 达内纪老师 GitHub,CSDN博客 说明: 最近为达内学员整理面试题。发现网上的面试题和答案基本都是抄来抄去的,甚至很多答案都是错误的。 所以整理了常见的面试题,对答案重新进行了筛选整理。 如果答案有错漏或者更好的答案…

iOS面试题系列之常见算法

iOS面试中熟悉常见算法 1、 对以下一组数据进行降序排序(冒泡排序)。“24,17,85,13,9,54,76,45,5,63” int main(int argc, char *argv[]) {int …

(2021年)iOS面试题及答案,以及添加Flutter 面试问题,Swift面试题

面试题的深入解析;​​​​​​​ 一,内存管理在实际开发中的应运。 1.UITableView的数据条数太多时会消耗内存,可以给UITableViewCell、UICollectionViewCell、UITableViewHeaderFooterView设置正确的复用ID,充分复用。 2.有…

iOS中高级面试题

https://blog.csdn.net/u014600626/article/details/102923706 iOS基础 1:讲讲你对atomic & nonatomic的理解 1、原子操作对线程安全并无任何安全保证。被 atomic 修饰的属性(不重载设置器和访问器)只保证了对数据读写的完整性,也就是原子性&am…