深入理解JVM
文章平均质量分 82
深入理解JVM
wenyixicodedog
文一西路代码狗
展开
-
jvm性能问题排查常用命令
1、查看进程下线程信息ps p 1 -L -o pcpu,pid,tid,time,tname,cmd,pmem,rss,wchan:30,psr,stat标准格式说明符:代码 头部 描述 %mem %MEM 进程占用物理内存的百分比 args COMMAND 输出命令及其全部参数 cmd CMD alias args comm COMMAND 仅输出可执行文件的名字 command COMMAND a原创 2021-07-24 16:16:42 · 499 阅读 · 0 评论 -
深入理解JVM之 09——JVM 指令详解
引言:java虚拟机(java运行时的环境),通过JDK中的编译程序(javac)将java文件编译成.class字节码文件,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。JVM指令由一个字节长度的,代表着某种特定操作含义的数字(操作码)以及跟随其后若干个代表此操作所需参数(操作数)而构成,大多数没有操作数;操作码的长度为1个字节. 所以指令...原创 2020-08-16 17:54:25 · 825 阅读 · 0 评论 -
深入理解JVM之 08——类加载过程
一、什么是类加载机制?虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。二、类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准(Preparation)、解析(Resolution)、初始化(...原创 2020-08-16 17:57:03 · 170 阅读 · 0 评论 -
深入理解JVM之 10——深入理解G1垃圾收集器
引言G1(Garbage First)垃圾收集器是当今垃圾回收技术最前沿的成果之一。早在JDK7就已加入JVM的收集器大家庭中,成为HotSpot重点发展的垃圾回收技术,JDK9 默认就是使用的G1垃圾收集器。不同于其他的分代回收算法、G1最大的特点是引入分区的思路,弱化了分代的概念,合理利用垃圾收集各个周期的资源,解决了其他收集器甚至CMS的众多缺陷。每块区域既有可能属于O区、也有可能是...转载 2020-08-16 17:55:55 · 516 阅读 · 0 评论 -
深入理解JVM之 11——JVM常见参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中断,正确的选择不同的gc策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同(...转载 2020-08-16 17:56:47 · 724 阅读 · 0 评论 -
深入理解JVM之 04——Linux下自己动手编译OpenJDK
前言学习《深入理解JAVA虚拟机—JVM高级特性与最佳实践》(周志明,第二版),作者在开篇第一章作了一些介绍后就提出:想要一探JDK内部的实现机制,最便捷的路径之一就是自己编译一套JDK,通过阅读和跟踪调试JDK源码去了解Java技术体系的原型。虽然门槛会高一点,但肯定比阅读各种书籍、文章更加贴近本质。另外,JDK中的很多底层方法都是本地化(Native)的,需要跟踪这些方法的运作或对J...原创 2020-08-16 17:57:47 · 1198 阅读 · 2 评论 -
深入理解JVM之 07——JVM内存分配和回收策略
引言 Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决两个问题:给对象分配内存以及回收分配给对象的内存。对象的内存分配,从大方向讲就是在堆上分配,对象主要分配在新生代的Eden区上,当然分配的规则并不是固定的,其细节取决于使用的是哪一种收集器组合,还有虚拟机中与内存相关的参数的设置。垃圾收集器组合一般就是Serial+Serial Old和Parallel+Ser...原创 2020-08-16 17:58:21 · 229 阅读 · 0 评论 -
深入理解JVM之 03——String.intern()内存分配及工作机制
一、引言String字符串最为最高频的类型,它的操作性能会直接影响整个程序的性能。Java中八种基本类型的包装类的大部分以及特殊类型String都实现了常量池技术,它们是Byte、Short、Integer、Long、Character、Boolean,另外两种浮点数类型的包装类(Float、Double)则没有实现。另外Byte,Short,Integer,Long,Character这5种...原创 2020-08-16 17:57:31 · 307 阅读 · 0 评论 -
深入理解JVM之 06——一文揭秘JAVA七种垃圾收集器
前言 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。接下来讨论的收集器基于JDK1.7 Update 14 之后的HotSpot虚拟机(在此版本中正...原创 2020-08-16 17:58:11 · 237 阅读 · 0 评论 -
深入理解JVM之 05——TO BE OR NOT TO BE(对象的起死回生之术)
对象孰生孰死 垃圾收集器在对对象进行回收之前,第一件事就是要确定哪些对象已经“死去”,需要被回收。判断对象生死的算法,主要有以下两种。引用计数算法 这种算法,给每个对象设置一个引用计数器(在对象头中),当有一个地方引用它时,计数器加1;引用失效时,计数器减1;计数器为0,意味着对象独自漂泊在堆中,没人认识它,不可能再被使用,这时就可以回收了。这种算法,实现简单,...原创 2020-08-16 17:57:59 · 337 阅读 · 0 评论 -
深入理解JVM之 02——深度解析JAVA垃圾回收机制
**细说Java 垃圾回收**之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++ 程序员,吃完直接就走的,是 Java 程序员。原创 2020-08-16 17:53:42 · 235 阅读 · 0 评论 -
深入理解JVM之 01——《深入理解Java虚拟机--JVM高级特性与最佳实践》第二版
同学,分享给你一个学习JVM系列知识必看的文档《深入理解Java虚拟机:JVM高级特性与最佳实践》内容简介 :全书共分为五大部分。第一部分从宏观的角度介绍了整个Java技术体系的过去、现在和未来,以及如何独立地编译一个OpenJDK7,这对理解后面的内容很有帮助。第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃...原创 2020-08-16 17:57:17 · 405 阅读 · 0 评论