JVM产品分析与实践
文章平均质量分 89
雨田说码
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
11-JVM中常用垃圾回收器分析与实践
概述JVM系统为了对内存中的垃圾进行回收,基于GC算法,开发了一些垃圾回收器,例如:其中:年轻代和老年代的串行收集器: Serial GC)年轻代和老年代的并行收集器:(Parallel GC)年轻代的并行收集器 (Parallel New) + 老年代的并发收集器(CMS-Concurrent Mark and Sweep)。年轻代和老年代的G1收集器, 负责回收年轻代和老年代。说明:除了以上几种组合方式外,其它的组合方式要么现在已经不支持,要么不推荐。如何对这些组合进行选择,要结合系统原创 2022-05-23 16:47:30 · 1894 阅读 · 1 评论 -
10-JVM中的GC初识
GC简介何为GCGC(Garbage Collection)称之为垃圾回收,是对内存中的垃圾对象,采用一定的算法进行内存回收的一个动作。比方说,java中的垃圾回收会对内存中的对象进行遍历,对存活的对象进行标记,其未标记对象可认为是垃圾对象,然后基于特定算法进行回收。为何要学习GC深入理解GC的工作机制,可以帮你写出更好的Java应用,提高开发效率,同时也是进军大规模应用开发的一个前提。GC垃圾对象判定引用计数法这个算法是给每一个对象设置一个引用计数器,每当有一个地方引用这个对象的时候,计数器原创 2022-05-23 16:09:04 · 1070 阅读 · 0 评论 -
08-JVM中的内存溢出
文章目录简介何为内存溢出内存溢出的原因内存溢出实践大对象导致堆内存溢出频繁创建对象导致内存溢出小节面试分析简介何为内存溢出内存中剩余的内存不足以分配给新的内存请求就会内存溢出。内存溢出可能直接导致系统崩溃。内存溢出的原因内存泄漏是导致内存溢出的一种原因,但内存溢出不全是由内存泄漏引起的,还可能是:1)创建的对象太大导致堆内存溢出2)创建的对象太多导致堆内存溢出3)方法出现了无限递归调用导致栈内存溢出4)方法区内存空间不足导致内存溢出。内存溢出实践大对象导致堆内存溢出第一步:编写如下代原创 2022-05-22 18:01:41 · 1205 阅读 · 0 评论 -
09-JVM 内存泄漏分析与实践
文章目录简介何为内存泄漏内存泄漏带来的问题导致内存泄漏的原因内存泄漏分析常用手段内存泄漏分析与实践静态字段导致的内存泄漏不正确的hashCode和equals实现内部类导致的内存泄漏小节面试分析简介何为内存泄漏动态分配的内存空间,在使用完毕后未得到释放,结果导致一直占据该内存单元,直到程序结束。这个现象称之为内存泄漏。因此良好的代码规范,可以有效地避免这些错误。内存泄漏带来的问题1)长时间运行,程序会变卡,性能严重下降。2)OutOfMemoryError错误,系统直接挂掉。导致内存泄漏的原因原创 2022-05-22 18:10:49 · 1530 阅读 · 0 评论 -
07-JVM内存逃逸分析与实践
文章目录简介背景何为逃逸分析逃逸分析案例演示逃逸对象未逃逸对象逃逸分析参数设置代码优化实践概述栈上分配同步锁消除标量替换分析小节面试分析简介背景随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。在Java虚拟机中,对象是在Java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析(Escape Analysis)后发现,一个对象并没有逃逸出方法的话,那么就可能被优化成栈上分配原创 2022-05-22 17:50:12 · 1302 阅读 · 0 评论 -
04-JVM 运行时内存分析
文章目录程序计数器栈结构分析堆内存分析方法区分析总结(summary)程序计数器栈结构分析堆内存分析方法区分析总结(summary)原创 2022-05-21 13:16:01 · 2001 阅读 · 0 评论 -
03-JVM 常用工具应用
文章目录Jconsole 应用JvisualVM应用启动JvisualVM安装VIsualGC插件。基于JvisualVM进行内存分析Jprofiler应用总结(Summary)Jconsole 应用JConsole 是一个内置 Java 性能分析器,可以从命令行(直接输入jconsole)或在 GUI shell (jdk\bin下打开)中运行。它用于对JVM中内存,线程和类等的监控。它可以监控本地的jvm,也可以监控远程的jvm,也可以同时监控几个jvm。这款工具的好处在于,占用系统资源少,而且原创 2022-05-21 08:48:34 · 1710 阅读 · 0 评论 -
06-字节码增强技术分析与实践
文章目录简介ASM技术概述API说明字节码增强Asm辅助工具Javassist技术概述API说明字节码增强Java Agent技术简介API说明字节码增强实践总结(Summary)简介字节码增强技术相当于是一把打开运行时JVM的钥匙,利用它可以对现有字节码进行修改或者动态生成新的字节码,进而对运行中的程序做修改,实现热部署。也可以跟踪JVM运行中程序的状态,进行性能诊断等。此外,我们平时使用的动态代理、AOP也与字节码增强密切相关,它们实质上还是利用各种手段生成符合规范的字节码文件。综上所述,掌握字节原创 2022-05-15 07:56:56 · 2573 阅读 · 1 评论 -
05-字节码解读分析与实践
文章目录字节码简介什么是字节码为什么要学习字节码字节码的简要执行过程如何解读字节码?准备工作直接解读javap指令应用jclasslib插件应用字节码解读课堂练习字节码结构分析(了解)整体结构魔数版本号常量池访问标识类型引用字段表集合方法表集合属性表集合总结(Summary)字节码简介什么是字节码为什么要学习字节码字节码的简要执行过程如何解读字节码?准备工作编写如下代码,例如:package com.java.jvm.bytecode;public class IntTests {原创 2022-05-15 07:32:24 · 1837 阅读 · 1 评论 -
02-类加载子系统分析与实践
概述类加载子系统是负责将类从磁盘或网络读到JVM内存,然后交给执行引擎执行,如图所示。说明:学习类加载有助于我们更深入地理解JAVA类成员的初始化过程,运行过程。并可以为后续的线上问题的解决及调优提供一种基础保障。类加载器是什么?类加载器是在类运行时负责将类读到内存的一个对象,其类型为ClassLoader类型,此类型为抽象类型,通常以父类形式出现。类加载器对象常用方法说明:getParent() 返回类加载器的父类加载器(不继承而是组合)。loadClass(String name)原创 2022-05-13 18:16:40 · 2279 阅读 · 0 评论 -
01-JVM 简介
JVM技术简介JVM 简介JVM是什么市场主流JVM分析为什么要学习JVMJVM体系结构JVM规范架构Hotspot基本架构Graalvm基本架构分析(了解)JVM 简介JVM是什么JVM 是 Java Virtual Machine的缩写,顾名思义,它是一个可以执行JAVA字节码的虚拟计算机(有自己的指令集、内存区域、执行引擎等),拥有自己独立的运行机制,是JAVA平台的一部分,如图-1所示:图-1其中,图中的: JRE(Java Runtime Environment)Java程序运行时原创 2022-05-09 18:01:47 · 2965 阅读 · 1 评论
分享