随笔分类 -  JVM

摘要:1、为什么要调优? 防止出现OOM,进行JVM规划和预调优 解决程序运行中各种OOM 减少Full GC出现的频率,解决运行慢、卡顿问题 2、调优的大方向 合理地编写代码 充分并合理的使用硬件资源 合理地进行JVM调优 3、调优监控的依据 运行日志异常堆栈 GC日志 线程快照 堆转储快照 4、性能优 阅读全文
posted @ 2022-03-11 16:11 幻月hah 阅读(896) 评论(0) 推荐(0) 编辑
摘要:一、堆溢出 报错信息 java.lang.OutOfMemoryError: Java heap space 参数配置 -XX:+PrintGCDetails -XX: MetaspaceSize=64m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPat 阅读全文
posted @ 2022-03-09 15:28 幻月hah 阅读(192) 评论(0) 推荐(0) 编辑
摘要:一、GC分类 1、串行vs并行 按线程数分,可以分为串行垃圾回收器和并行垃圾回收器。 2、并发式vs独占式 按照工作模式分,可以分为并发式垃圾回收器和独占式垃圾回收器。 并发式垃圾回收器与应用程序线程交替工作,以尽可能减少应用程序的停顿时间。 独占式垃圾回收器( Stop the world)一旦运 阅读全文
posted @ 2022-03-07 15:53 幻月hah 阅读(368) 评论(0) 推荐(0) 编辑
摘要:一、概述 关于垃圾收集有主个经典问题: 哪些内存需要回收? 什么时候回收? 如何回收? 1、什么是垃圾? 垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。 如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象 阅读全文
posted @ 2022-03-02 17:30 幻月hah 阅读(271) 评论(0) 推荐(0) 编辑
摘要:一、执行引擎是做什么的 执行引擎是Java虚拟机的核心组成部分之一 虚拟机是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构 阅读全文
posted @ 2022-02-25 17:37 幻月hah 阅读(73) 评论(0) 推荐(0) 编辑
摘要:一、对象的实例化 1、创建对象的方式 new 最常见的方式 变形1: Xxx的静态方法 变形2:XxxBuilder/xxxFactory的静态方法 Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是public Constructor的newInstance(Xx 阅读全文
posted @ 2022-02-24 17:25 幻月hah 阅读(64) 评论(0) 推荐(0) 编辑
摘要:1、堆、栈、方法区的关系 2、方法区在哪里 《Java虚拟机规范》中明确说明: “尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。” 但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。所以,方法区看作 阅读全文
posted @ 2022-02-22 17:31 幻月hah 阅读(170) 评论(0) 推荐(0) 编辑
摘要:1、核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java 堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的 阅读全文
posted @ 2022-02-17 17:32 幻月hah 阅读(285) 评论(0) 推荐(0) 编辑
摘要:1、作用 主管Java程序的运行,它保存方法的局部变量(8种基本数据类型、对象的引用地址)、部分结果,并参与方法的调用和返回。 局部变量vs成员变量(或属性) 基本数据变量vs引用类型变量(类、数组、接口) 2、特点 栈是一种快速有效的分配存储方式,访问速度仅次于PC寄存器 栈的优点是跨平台,指令集 阅读全文
posted @ 2022-02-15 17:40 幻月hah 阅读(220) 评论(0) 推荐(0) 编辑
摘要:JVM整体结构 1、作用 程序计数器( PC寄存器 )是用来存储指向下一条指令的地址,就是将要执行的指令代码,然后由执行引擎读取下一条指令。 2、特征 程序计数器是一块很小的内存空间,几乎可以忽略不计,也是运行速度最快的存储区域 每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期 阅读全文
posted @ 2022-02-15 17:34 幻月hah 阅读(471) 评论(0) 推荐(0) 编辑
摘要:一、定义 定义 如果一个类加载器在接到加载类的请求时,它首先不会自己尝试去加载这个类,而是把这个请求任务委托给父类加载器去完成,依次递归,如果父类加载器可以完成类加载任务,就成功返回。只有父类加载器无法完成此加载任务时,才自己去加载。 工作原理 如果一个类加载器收到了类加载请求,它并不会自己先去加载 阅读全文
posted @ 2022-02-15 16:18 幻月hah 阅读(258) 评论(0) 推荐(0) 编辑
摘要:一、概述 1、作用 类加载器是JVM执行类加载机制的前提。 ClassLoader的作用: ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目标类对应的 阅读全文
posted @ 2022-02-15 14:54 幻月hah 阅读(284) 评论(0) 推荐(0) 编辑
摘要:按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段: 从程序中类的使用过程看: 一、过程一:Loading(加载)阶段 1、做了哪些事? 在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要 阅读全文
posted @ 2022-02-10 17:24 幻月hah 阅读(896) 评论(0) 推荐(2) 编辑
摘要:一、Class文件结构 Class文件的结构并不是一成不变的,随着Java虚拟机的不断发展,总是不可避免地会对Class文件结构做出一些调整,但是其基本结构和框架是非常稳定的。 魔数 Class文件版本 常量池 访问标识(或标志) 类索引,父类索引,接口索引集合 字段表集合 方法表集合 属性表集合 阅读全文
posted @ 2022-02-10 15:58 幻月hah 阅读(259) 评论(0) 推荐(0) 编辑
摘要:一、什么是Java虚拟机 虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM) Java程序的跨平台特性主要是指字节码文 阅读全文
posted @ 2022-02-08 15:49 幻月hah 阅读(62) 评论(0) 推荐(0) 编辑

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