深入理解JVM虚拟机
文章平均质量分 92
带你走进JVM的世界,整合高质量文章以阐述虚拟机的原理及相关技术,让开发者更好地了解Java的底层运行原理以及相应的调优方法。
Java技术江湖
在下程序员黄小斜,前阿里Java工程师,4年码龄。 专注分享Java技术干货文,偶尔也吹水吐槽聊人生。
展开
-
深入理解JVM虚拟机15:Java线上故障排查全套路总结
作者:fredalxin来源:https://fredal.xin/java-error-check线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、jmap 伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好...转载 2021-05-10 13:55:14 · 613 阅读 · 0 评论 -
深入理解JVM虚拟机14:JVM性能调优的6大步骤,及关键调优参数详解
JVM内存调优对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。1.Full GC会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC的次数。2.导致Full GC的原因1)年老代(Tenured)被写满调优时尽量让对象在新生代GC时被回收、让对象在新生代多存活一段时间和不要创建过大的对象及数组避免直接在旧生代创建对象 。2)持久代Pemanet Gener转载 2021-05-10 13:53:58 · 5765 阅读 · 0 评论 -
深入理解JVM虚拟机13:JVM面试题,看这篇就足够了(87题详解)
1、java中会存在内存泄漏吗,请简单描述。会。自己实现堆载的数据结构时有可能会出现内存泄露,可参看effective java.2、64 位 JVM 中,int 的长度是多数?Java 中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位。意思就是说,在 32 位 和 64 位 的 Java 虚拟机中,int 类型的长度是相同的。3、Serial 与 Parallel GC 之间的不同之处?Serial 与 Parallel 在 GC 执行的时候都会引起 stop-the-wor转载 2021-05-06 10:44:10 · 929 阅读 · 0 评论 -
再谈GC1:GC简介,分代与回收算法
说明:在本文中,Garbage Collection翻译为 “垃圾收集”,garbage collector翻译为 “垃圾收集器”;一般认为,垃圾回收和垃圾收集是同义词。Minor GC翻译为:小型GC; 而不是次要GCMajor GC翻译为:大型GC; 而不是主要GC原因在于,大部分情况下, 发生在年轻代的Minor GC次数会很多,翻译为次...原创 2018-07-19 15:13:07 · 5052 阅读 · 0 评论 -
再谈GC2:Java垃圾收集器与GC日志分析实践
4. GC 算法(实现篇) - GC参考手册2017年02月05日 23:58:36阅读数:6862您应该已经阅读了前面的章节:垃圾收集简介 - GC参考手册 Java中的垃圾收集 - GC参考手册 GC 算法(基础篇) - GC参考手册学习了GC算法的相关概念之后, 我们将介绍在JVM中这些算法的具体实现。首先要记住的是, 大多数JVM都需要使用两种不同的GC算法 —...转载 2018-07-19 16:35:10 · 1188 阅读 · 0 评论 -
再谈GC3:GC调优思路与常用工具
5. GC 调优(基础篇) - GC参考手册2017年02月14日 17:41:49阅读数:4893说明:Capacity: 性能,能力,系统容量; 文中翻译为”系统容量“; 意为硬件配置。您应该已经阅读了前面的章节:垃圾收集简介 - GC参考手册 Java中的垃圾收集 - GC参考手册 GC 算法(基础篇) - GC参考手册 GC 算法(实现篇) - GC参考手...转载 2018-07-19 17:13:43 · 1886 阅读 · 0 评论 -
JVM原理学习总结
JVM原理学习总结这篇总结主要是基于我之前JVM系列文章而形成的的。主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点。谢谢更多详细内容可以查看我的专栏文章:深入理解JVM虚拟机https://blog.csdn.net/column/details/21960.htmlJVM介绍和源码首先JVM是一个虚拟机,当你安装了jre,它就包含了jvm环境...原创 2018-06-28 22:32:40 · 4750 阅读 · 0 评论 -
深入理解JVM虚拟机3:垃圾回收器详解
转自 JavaDoopHotSpot JVM 垃圾回收器更新时间:2018-03-28关于 JVM 内存管理或者说垃圾收集,大家可能看过很多的文章了,笔者准备给大家总结下。这算是系列的第一篇,接下来一段时间会持续更新。本文主要是翻译《Memory Management in the Java HotSpot Virtual Machine》白皮书的前四章内容,这是 2006 的老文...转载 2017-12-10 12:02:37 · 3201 阅读 · 1 评论 -
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
Java虚拟机性能管理神器 - VisualVM(1) 简介 - JVM轻量级监控分析神器一、VisualVM是什么? VisualVM是一款免费的JAVA虚拟机图形化监控分析工具。 1. 拥有图形化的监控界面。 2. 提供本地、远程的JVM监控分析功能。 3. 是一款免费的JAVA工具。 4.VisualVM拥有丰富的插件支持。二...转载 2018-01-31 17:49:23 · 1287 阅读 · 0 评论 -
深入理解JVM虚拟机13:再谈四种引用及GC实践
Java中的四种引用类型一、背景Java的内存回收不需要程序员负责,JVM会在必要时启动Java GC完成垃圾回收。Java以便我们控制对象的生存周期,提供给了我们四种引用方式,引用强度从强到弱分别为:强引用、软引用、弱引用、虚引用。二、简介1.强引用 StrongReferenceStrongReference是Java的默认引用形式,使用时不需要显示定义。任何通...转载 2018-01-31 21:34:35 · 1492 阅读 · 0 评论 -
深入理解JVM虚拟机11:Java内存异常原理与实践
JVM系列之实战内存溢出异常实战内存溢出异常大家好,相信大部分Javaer在code时经常会遇到本地代码运行正常,但在生产环境偶尔会莫名其妙的报一些关于内存的异常,StackOverFlowError,OutOfMemoryError异常是最常见的。今天就基于上篇文章JVM系列之Java内存结构详解讲解的各个内存区域重点实战分析下内存溢出的情况。在此之前,我还是想多余累赘一些其他关于对象...转载 2017-10-27 18:09:04 · 1362 阅读 · 0 评论 -
从Java小白到收获BAT等offer,分享我这两年的经验和感悟
写在最前我写过很多篇秋招总结,这篇文章应该是最后一篇总结,当然也是最完整,最详细的一篇总结。秋招是我人生中一段宝贵的经历,不仅是我研究生生涯交出的一份答卷,也是未来职业生涯的开端。仅以此文,献给自己,以及各位在求职路上的,或者是已经经历过校招的朋友们。不忘初心,方得始终。前言在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司...原创 2017-03-08 09:40:54 · 36812 阅读 · 16 评论 -
Java工程师修炼之路(从小白到BAT的两年学习历程)
前言在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易,华为等。一路走来也遇到很多困难,也踩了很多坑,同时我自己也探索了很多的学习方法,总结了很多心得体会,并且,我对校园招聘也做了一些研究和相应的准备。在今年的秋季招聘结束以后,我也决定把这些东西全部都写成文字,做成专题,以便...原创 2017-03-08 19:32:08 · 35309 阅读 · 6 评论 -
深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法
JVM GC基本原理与GC算法 Java的内存分配与回收全部由JVM垃圾回收进程自动完成。与C语言不同,Java开发者不需要自己编写代码实现垃圾回收。这是Java深受大家欢迎的众多特性之一,能够帮助程序员更好地编写Java程序。下面四篇教程是了解Java 垃圾回收(GC)的基础:垃圾回收简介 圾回收是如何工作的? 垃圾回收的类别这篇教程是系列第一部分。首先会解释基...转载 2017-09-14 16:04:43 · 1952 阅读 · 0 评论 -
深入理解JVM虚拟机开篇:JVM介绍与知识脉络梳理
完整内容欢迎阅读我的博客专栏:深入理解JVM虚拟机转自:https://mp.weixin.qq.com/s/EjVfk1iOuQUjLfPxt_DJ7Q是大名鼎鼎的Java 虚拟机, 据说这个星球上每天有900多万程序员和我打交道,这真是一个惊人的数字。 这900多万人中不少人对我的技术内幕非常感兴趣, 有事儿没事儿都要把我“大卸八块”, 深入了解一下。甚至还有人从我...原创 2017-09-15 16:14:26 · 4423 阅读 · 0 评论 -
深入理解JVM虚拟机1:JVM内存的结构与永久代的消失
所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。先看一张图,这张图能很清晰的说明JVM内存结构布局。...转载 2017-09-15 16:43:32 · 2224 阅读 · 0 评论 -
深入理解JVM虚拟机10:JVM常用参数以及调优实践
转自http://www.rowkey.me/blog/2016/11/02/java-profile/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.ioJVM常用参数选项jvm 可配置的参数选项可以参考 Oracle 官方网站给出的相关信息:http://www.oracle.c...转载 2017-10-27 18:30:57 · 7488 阅读 · 1 评论 -
深入理解JVM虚拟机9:JVM监控工具与诊断实践
转自https://juejin.im/post/59e6c1f26fb9a0451c397a8cjvm优化必知系列——监控工具这是jvm优化系列第二篇:jvm优化——垃圾回收通过上一篇的jvm垃圾回收知识,我们了解了jvm对内存分配以及垃圾回收是怎么来处理的。理论是指导实践的工具,有了理论指导,定位问题的时候,知识和经验是关键基础,数据可以为我们提供依据。在...转载 2017-10-30 15:34:01 · 1319 阅读 · 0 评论 -
深入理解JVM虚拟机7:JNDI,OSGI,Tomcat类加载器实现
打破双亲委派模型JNDIJNDI 的理解JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之中的一个,不少专家觉得,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。那么,JNDI究竟起什么作用?//带着问题看文章是最有效的要了解JN...转载 2017-10-30 15:51:40 · 1729 阅读 · 1 评论 -
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
java编译期优化java语言的编译期其实是一段不确定的操作过程,因为它可以分为三类编译过程:1.前端编译:把.java文件转变为.class文件2.后端编译:把字节码转变为机器码3.静态提前编译:直接把*.java文件编译成本地机器代码从JDK1.3开始,虚拟机设计团队就把对性能的优化集中到了后端的即时编译中,这样可以让那些不是由Javac产生的Class文件(如JRuby、Gr...转载 2017-10-30 19:38:53 · 1958 阅读 · 0 评论 -
深入理解JVM虚拟机6:深入理解JVM类加载机制
深入理解JVM类加载机制简述:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。下面我们具体来看类加载的过程:类的生命周期类从被加载到内存中开始,到卸载出内存,经历了加载、连接、初始化、使用四个阶段,其中连接又包含了验证、准备、解析三个步骤。这些步骤总体上是按照图中顺序进行的,但是Java语言本...转载 2017-10-30 19:41:20 · 1502 阅读 · 1 评论 -
深入理解JVM虚拟机5:虚拟机字节码执行引擎
虚拟机字节码执行引擎转自https://juejin.im/post/5abc97ff518825556a727e66所谓的「虚拟机字节码执行引擎」其实就是 JVM 根据 Class 文件中给出的字节码指令,基于栈解释器的一种执行机制。通俗点来说,也就是 JVM 解析字节码指令,输出运行结果的一个过程。接下来我们详细看看这部分内容。方法调用的本质在描述「字节码执行引擎」...转载 2017-10-31 16:13:22 · 1206 阅读 · 1 评论 -
深入理解JVM虚拟机4:Java class介绍与解析实践
用java解析class文件转自https://juejin.im/post/589834a20ce4630056097a56前言身为一个java程序员,怎么能不了解JVM呢,倘若想学习JVM,那就又必须要了解Class文件,Class之于虚拟机,就如鱼之于水,虚拟机因为Class而有了生命。《深入理解java虚拟机》中花了一整个章节来讲解Class文件,可是看完后,一直都还...转载 2017-11-01 16:33:20 · 1411 阅读 · 0 评论