08 2022 档案

摘要:浅堆 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 半条咸鱼 编辑
摘要:文档描述 1、JVM 有一个方法区,在所有 JVM 线程之间共享 2、方法区类似于传统语言的编译代码的存储区,或者类似于操作系统进程中的“text”段,它存储每个类的结构,如:运行时常量池、字段、方法数据、方法、构造函数的代码,包括用于类和实例初始化。以及接口初始化的特殊方法 3、方法区在虚拟机启动 阅读全文
posted @ 2022-08-05 21:55 半条咸鱼 编辑
摘要:堆(Heap)概述 1、堆针对一个 JVM 进程是唯一的 (1)即一个进程只有一个 JVM (2)进程包含多个线程,多个线程共享同一堆空间 (3)一个 JVM 实例只存在一个堆内存,堆是 Java 内存管理的核心区域 (4)所有线程共享 Java 堆,但还可以划分出线程私有的缓冲区(TLAB:Thr 阅读全文
posted @ 2022-08-05 01:48 半条咸鱼 编辑
摘要:本地方法(Native Method) 1、本地方法是一个 Java 调用非 Java 代码的接囗,是一种 Java 方法,该方法的实现由非 Java 语言实现,比如:C 2、该特征并非 Java 所特有,很多其它的编程语言都有这一机制,比如:在 C++中,可以用 extern "c" 告知 C++ 阅读全文
posted @ 2022-08-04 18:29 半条咸鱼 编辑
摘要:内存中的栈与堆 1、栈 (1)是运行时的单位 (2)解决程序的运行问题,即程序如何执行,即如何处理数据 2、堆 (1)是存储的单位 (2)解决数据存储的问题,即数据存放方式,存放位置 Java 虚拟机栈 1、Java Virtual Machine Stack 2、每个线程在创建时,都会创建一个虚拟 阅读全文
posted @ 2022-08-04 16:57 半条咸鱼 编辑
摘要:概述 1、内存 (1)硬盘和CPU的中间仓库及桥梁 (2)承载 OS 和应用程序的实时运行 JVM 内存布局规定 Java 在运行过程中内存申请、分配、管理的策略 (3)保证 JVM 高效稳定运行 (4)不同 JVM 对于内存的划分方式和管理机制存在着部分差异 2、JVM 定义若干种程序运行期间,会 阅读全文
posted @ 2022-08-03 19:21 半条咸鱼 编辑
摘要:类加载器子系统作用 1、负责从文件系统或网络中加载 .class 文件,.class 文件在文件开头有特定的文件标识 2、ClassLoader 只负责 .class 文件的加载,至于它是否可以运行,则由 Execution Engine 决定 3、加载的类信息存放在一块内存空间(方法区),除了类的 阅读全文
posted @ 2022-08-03 15:03 半条咸鱼 编辑
摘要:字节码 1、任何能在 JVM 平台上执行的字节码格式都是一样的,统称为 JVM 字节码 2、不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的 JVM 上运行 3、JVM 与 Java 语言并没有必然的联系,它只与特定的二进制文件格式:Class 文件格式所关联,Class 文件中包 阅读全文
posted @ 2022-08-02 22:55 半条咸鱼 编辑

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