随笔分类 -  JVM

摘要:Java 内存模型 1、Java Memory Model(JMM) 2、JMM 在多线程读写共享数据(成员变量、数组)时,定义一套对数据的可见性、有序性、原子性的规则和保障 (1)原子性:保证指令不会受到线程上下文切换的影响 (2)可见性:保证指令不会受 CPU 缓存的影响 (3)有序性:保证指令 阅读全文
posted @ 2022-09-05 21:06 半条咸鱼 编辑
摘要:类文件结构 //魔数 u4 magic; //次要版本 u2 minor_version; //主要版本 u2 major_version; //常量池信息 u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; / 阅读全文
posted @ 2022-09-04 22:19 半条咸鱼 编辑
摘要:判断对象存活一般有两种方式 1、引用计数算法 2、可达性分析算法:JVM 使用 引用计数算法(Reference Counting) 1、对每个对象保存一个整型的引用计数器属性,用于记录对象被引用情况 (1)对于一个对象 A,只要有任何一个对象引用 A,则 A 的引用计数器就加 1;当引用失效时,引 阅读全文
posted @ 2022-09-03 00:15 半条咸鱼 编辑
摘要:程序计数器 1、Program Counter Register:程序计数器(寄存器) (1)程序计数器是 Java 对物理硬件的屏蔽与抽象 (2)物理上,通过寄存器实现程序计数器 2、作用:记录下一条 JVM 指令的执行地址 (1)解释器会解释指令为机器码,交给 CPU 执行,程序计数器记录下一条 阅读全文
posted @ 2022-09-01 13:32 半条咸鱼 编辑
摘要:浅堆 1、Shallow Heap 2、指一个对象所消耗的内存 (1)在 32 位系统中,一个对象引用会占据 4 个字节,一个 int 类型会占据 4 个字节,long 型变量会占据 8 个字节,每个对象头需要占用 8 个字节 (2)根据堆快照格式不同,对象的大小可能会同 8 字节进行对齐 3、JD 阅读全文
posted @ 2022-08-23 17:34 半条咸鱼 编辑
摘要:GC 分类 1、HotSpot VM 的 GC,按照回收区域分为 (1)部分收集(Partial GC) (2)整堆收集(Full GC) 2、部分收集(Partial GC):不完全收集整个 Java 堆的垃圾,其中分为 (1)新生代收集(Minor GC / Young GC):只收集新生代(E 阅读全文
posted @ 2022-08-16 23:59 半条咸鱼 编辑
摘要:IDEA 添加 JVM 参数选项 1、在 Run Configurations 中的 VM Options 中配置 2、例 (1)运行 jar 包 java -Xms100m -Xmx100m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+Print 阅读全文
posted @ 2022-08-14 13:05 半条咸鱼 编辑
摘要:命令行局限 1、无法获取方法级别的分析数据,如:方法间的调用关系、各方法的调用次数和调用时间等 2、要求用户登录到目标 Java 应用所在的宿主机上,使用不方便 3、分析数据通过终端输出,结果展示不够直观 JDK 工具 1、jconsole (1)可视化监控工具 (2)查看 Java 应用程序的运行 阅读全文
posted @ 2022-08-14 00:28 半条咸鱼 编辑
摘要:jps 1、Java Process Status 2、基本使用语法:jps [options] [hostid] (1)显示指定系统内所有 HotSpot 虚拟机进程(查看虚拟机进程信息) (2)用于查询正在运行的虚拟机进程 (3)说明:本地虚拟机的进程 ID,与操作系统的进程 ID 是一致,且唯 阅读全文
posted @ 2022-08-13 16:07 半条咸鱼 编辑
摘要:监控依据 1、运行日志 2、异常堆栈 3、GC 日志 4、线程快照 5、堆转储快照 调优方向 1、合理地编写代码 2、充分并合理的使用硬件资源 3、合理地进行 JVM 调优 性能优化的步骤 1、第一步:性能监控 (1)GC 频繁 (2)CPU load 过高 (3)OOM (4)内存泄露 (5)死锁 阅读全文
posted @ 2022-08-12 22:39 半条咸鱼 编辑
摘要:概述 1、类加载器是 JVM 执行类加载机制的前提 2、作用 (1)ClassLoader 是 Java 核心组件,所有 Class 由 ClassLoader 进行加载 (2)ClassLoader 负责通过各种方式,将 Class 信息的二进制数据流读入JVM内部,转换为一个与目标类对应的 ja 阅读全文
posted @ 2022-08-12 22:36 半条咸鱼 编辑
摘要:类的生命周期概述 1、Java 数据类型 (1)基本数据类型:由虚拟机预先定义 (2)引用数据类型:需要进行类的加载 2、Java 虚拟机规范,从 .class 文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括 7 个阶段 3、类的加载过程 (1)加载 (2)链接:验证 -> 准备 阅读全文
posted @ 2022-08-11 22:28 半条咸鱼 编辑
摘要:概述 1、在 JVM 指令集中,大多数的指令都包含其操作,所对应的数据类型信息 2、对于大部分与数据类型相关的字节码指令,它们的操作码助记符中都有特殊的字符,表明专门为哪种数据类型服务 (1)i 代表 int (2)l 代表 long (3)s 代表 short (4)b 代表 byte (5)c 阅读全文
posted @ 2022-08-11 00:26 半条咸鱼 编辑
摘要:Class 字节码文件结构 类型 名称 说明 长度 数量 魔数 u4 magic 魔数,识别 Class 文件格式 4 字节 1 版本号 u2 minor_version 副版本号(小版本) 2 字节 1 u2 major_version 主版本号(大版本) 2 字节 1 常量池集合 u2 cons 阅读全文
posted @ 2022-08-09 21:30 半条咸鱼 编辑
摘要:垃圾回收器概述 1、垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的 JVM 来实现 2、Java 已经衍生了众多 GC 版本 垃圾收集器分类 1、按线程数分:串行垃圾回收器、并行垃圾回收器 2、串行回收器 (1)在同一时间段内只允许有一个 CPU 用于执行垃圾回收操作,此时工作线 阅读全文
posted @ 2022-08-08 23:13 半条咸鱼 编辑
摘要:System.gc() 1、默认情况下,调用 System.gc() 或 Runtime.getRuntime().gc(),显式触发 Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存 2、System.gc() 调用附带一个免责声明,无法保证对垃圾收集器的调用,即不能确保 阅读全文
posted @ 2022-08-07 22:52 半条咸鱼 编辑
摘要:垃圾 1、在运行程序中,没有任何指针指向的对象 2、如果不及时对内存中的垃圾进行清理,则垃圾对象所占的内存空间会一直保留到应用程序的结束,被保留的空间无法被其它对象使用,甚至可能导致内存溢出 Java 垃圾回收机制 1、自动内存管理,无需开发人员手动参与内存的分配与回收,降低内存泄漏、内存溢出的风险 阅读全文
posted @ 2022-08-07 16:50 半条咸鱼 编辑
摘要:String 基本特性 1、String:字符串,使用一对 "" 引起表示 2、String 声明为 final 的,不可被继承 3、String 实现 Serializable 接口:表示字符串是支持序列化 4、String 实现 Comparable 接口:表示 String 可以比较大小 5、 阅读全文
posted @ 2022-08-07 02:15 半条咸鱼 编辑
摘要:执行引擎(Execution Engine)概述 1、执行引擎属于 JVM 的下层 2、包括:解释器、及时编译器、垃圾回收器 3、执行引擎是 JVM 核心的组成部分之一 4、作用:将字节码指令解释 / 编译为对应平台上的本地机器指令,即 JVM 中的执行引擎将高级语言翻译为机器语言 执行引擎的工作流 阅读全文
posted @ 2022-08-06 15:35 半条咸鱼 编辑
摘要:创建对象的方式 1、new:使用构造器直接创建,最常见的方式 (1)变形一:单例模式,不向外暴露构造方法,而是调用其静态方法 (2)变形二:工厂模式的静态方法 2、Class 的 newInstance 方法:反射的方式,只能调用空参的构造器,权限必须是 public 3、Constructor 的 阅读全文
posted @ 2022-08-05 23:53 半条咸鱼 编辑

点击右上角即可分享
微信分享提示