JVM
文章平均质量分 94
智秒数服.未闻
camping~candy
展开
-
JVM字节码执行模型及字节码指令集
JVM执行模型,是如何把Class文件里的字节码转换成我们的虚拟机栈的操作指令,以及整个虚拟机栈的内部数据结构是怎样的,这篇文章后续会详细介绍,并且稍微扩展下JVM规范中的一些字节码指令集。原创 2015-06-19 16:25:05 · 22722 阅读 · 3 评论 -
JVM 字节码指令对于栈帧数据操作举例
这一篇其实是对前面一篇《JVM字节码执行模型及字节码指令集》的一个延续和举例。结合例子看一下条件判定和无条件跳转指令对虚拟机栈的数据操作。 我们先来看一段代码例子。这里addEspresso()添加浓度方法会判断参数,如果参数package bytecode;/** * * Created by yunshen.ljy on 2015/6/21. */public原创 2015-06-21 16:23:14 · 18869 阅读 · 0 评论 -
JVM StackMapTable 属性的作用及理解
在Java 6版本之后JVM引入了栈图(Stack Map Table)概念。为了提高验证过程的效率,在字节码规范中添加了Stack Map Table属性,以下简称栈图,其方法的code属性中存储了局部变量和操作数的类型验证以及字节码的偏移量。也就是一个method需要且仅对应一个Stack Map Table。在Java 7版本之后把栈图作为字节码文件中的强制部分。 本来程序员是不需要关心JV原创 2015-07-01 21:48:24 · 25478 阅读 · 10 评论 -
通过字节码分析JDK8中Lambda表达式编译及执行机制
关于Lambda字节码相关的文章,很早之前就想写了,线上产品的后端技术,能快速迭代,除了得益于整体微服架构之外,语言层面上,也是通过Java8的lambda表达式的运用以及rxJava响应式编程框架,使代码更加简洁易维护,调用方式更加便捷。本文将介绍JVM中的方法调用相关的字节码指令,重点解析JDK7(JSR-292)之后新增的invokedynamic指令给lambda表达式的动态原创 2016-04-23 13:07:01 · 26589 阅读 · 16 评论 -
从字节码指令看重写在JVM中的实现
Java是解释执行的,包括动态链接的特性,都给解析或运行期间提供了很多灵活扩展的空间。面向对象语言的继承、封装和多态的特性,在JVM中是怎样进行编译、解析,以及通过字节码指令如何确定方法调用的版本是本文如下要探讨的主要内容,全文围绕一个多态的简单举例来看在JVM中是如何实现的。原创 2015-07-30 19:22:35 · 19543 阅读 · 0 评论 -
JVM性能调优实践——性能测试篇
前言本文主要基于工作中,关于性能调优的一些零散的信息整理。总结性的信息,以测试环境为例。系统信息如下: os: Linux 64位jdk:java version “1.8.0_121”, HotSpot(TM) 64-Bit Server VMdocker version: 17.04.0-ce第一篇先整理一些性能指标。第二篇整理一下jvm的性能问题分析,以及基于dock...原创 2018-05-15 17:11:56 · 6894 阅读 · 0 评论 -
JVM性能调优实践——G1 垃圾收集器分析、调优篇
前言关于G1 GC以及其他垃圾收集器的介绍可以参考前一篇JVM性能调优实践——G1 垃圾收集器介绍篇。了解了G1垃圾收集器的运行机制之后,就可以针对一些GC相关参数来调整内存分配以及运行策略。下文的调优主要针对G1垃圾收集器进行介绍,以及会分析一下G1 GC的日志格式。 G1 GC日志分析在执行具体的调优任务前,需要结合GC日志以及应用本身的特点。打印详细GClog,...原创 2018-06-04 13:58:15 · 19086 阅读 · 18 评论 -
JVM性能调优实践——JVM篇
前言在遇到实际性能问题时,除了关注系统性能指标。还要结合应用程序的系统的日志、堆栈信息、GClog、threaddump等数据进行问题分析和定位。关于性能指标分析可以参考前一篇JVM性能调优实践——性能指标分析。 JVM的调优和故障处理可以使用JDK的几个常用命令工具。因为本文是基于Docker容器内部的Springboot服务。需要调整一下docker容器的启动参数,才可以使用jma...原创 2018-05-24 11:46:49 · 35392 阅读 · 10 评论 -
JVM性能调优实践——G1 垃圾收集器介绍篇
前言前面两篇主要整理了性能测试的主要观察指标信息:性能测试篇,以及JVM性能调优的工具:JVM篇。这一篇先简单总结一下GC的种类,然后侧重总结下G1(Garbage-First)垃圾收集器的分代,结合open-jdk源码分析下重要算法如SATP,重要存储结构如CSet、RSet、TLAB、PLAB、Card Table等。最后会再梳理下G1 GC的YoungGC,MixedGC收集过程。 ...原创 2018-05-30 17:34:59 · 25704 阅读 · 42 评论