
JVM
文章平均质量分 88
cj_eryue
工作之余的学习
展开
-
JVM 触发类加载的条件有哪些?
Java 虚拟机(JVM)中,类的加载并不是随意发生的,而是由特定的触发条件决定的。什么时候加载?什么时候初始化?原创 2025-01-10 10:23:48 · 1149 阅读 · 0 评论 -
内存飙高问题如何排查?
内存飙高如果发生在java进程上,一般情况是因为创建了大量对象导致,持续飙高说明垃圾回收跟不上对象创建的速度,或者内存泄漏导致对象无法被回收!排查中涉及到如下命令:jstat -gc pid 1000 查看gc情况,时间等信息,每隔一秒打印一次jmap -histo pid | head -20 查看堆内存占用空间最大的钱20个对象类型jmap -dump:live,format=b,file=/home/chenjian/myheapdump.hprof pid 导出堆内存快照。原创 2024-02-29 20:00:19 · 2859 阅读 · 0 评论 -
JVM的类加载过程
类加载主要分为5个过程:加载、验证、准备、解析、初始化,其中验证、准备、解析统称为连接过程。原创 2022-10-31 19:49:35 · 532 阅读 · 0 评论 -
一个对象在JVM里的创建过程
一、JDK、JRE、JVM的关系JVM:JVM是面向操作系统的,它负责把程序运行编译成的.Class字节码解释成系统所能识别的指令并执行,同时也负责程序运行的内存的管理。JRE:JRE是是面向于程序的,JRE对JVM进行了一层包装,它除了提供JVM的功能之前,还提供了一套语言需要编译成Class后在JVM内运行所依赖环境(比如说 String.class、Object.class等这种运行时必须依赖的对象)。JDK:JDK是面向更上层的开发人员,JDK在JRE的基础上又进行了一层包装,它除了提供原创 2021-06-29 11:02:27 · 544 阅读 · 1 评论 -
类加载器、双亲委派、打破双亲委派浅析
类加载过程虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转化解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)。类加载器所谓的类加载器(Class Lo原创 2021-03-23 19:56:37 · 168 阅读 · 0 评论 -
JVM运行时数据区&垃圾回收算法&垃圾回收器
java运行时数据区划分成如下图所示:1.java堆(Java Heap)Java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块区域,在虚拟机启动的时候创建,用于存放对象实例,该区域也是垃圾收集器管理的主要区域;该区域还可以被细分为:新生代和老年代,再细致一点有Eden区,FromSurvivor区和To Survivor区等,这样划分的目的是为了更好的回收内存,或者更快的分配内存(后面会有单独的博文去说)java堆可以通过-Xmx和-Xms来指定大小,如果该区域没.原创 2020-10-26 12:14:39 · 209 阅读 · 0 评论