jvm原理
文章平均质量分 81
weixin_38403493
这个作者很懒,什么都没留下…
展开
-
【JVM】第十二章 Java内存模型与线程
第十二章 Java内存模型与线程高效并发:多任务同时处理衡量一个服务性能高低好坏,每秒事务处理数(TPS)是最重要的指标之一,它代表着一秒内服务端平均能响应的请求总数,而TPS值与并发能力又有非常密切关系。下面我们来介绍虚拟机是如何来实现、多线程之间由于共享和竞争数据而导致的一系统问题及解决方案。 一、硬件的效率与一致性处理器、高速缓存、主内存1)处理器与主内存的速...原创 2018-12-15 17:37:19 · 131 阅读 · 0 评论 -
【JVM】第七章 虚拟机类加载机制
第七章 虚拟机类加载机制https://blog.csdn.net/luanlouis/article/details/50529868一、概述class文件中描述的各种信息,最终都要加载到虚拟机中之后才能运行和使用。类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类的加载过程是在...原创 2018-12-11 18:55:25 · 139 阅读 · 0 评论 -
【JVM】第六章_2 指令简介
字节码指令简介:一、字节码与数据类型i代表对int类型的数据操作,l代表long,s代表short,b代表byte,c代表char,f代表float,d代表double,a代表reference。 二、加载和存储指令加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回的数据传输。a. 将一个局部变量加载到操作栈的指令:iload, iload_<n>,...原创 2018-12-11 18:54:21 · 124 阅读 · 0 评论 -
【JVM】第六章_1 类文件结构
第六章_1 类文件结构这章开始之前,我们先搞明白两个概念,机器码和字节码。一、机器码与字节码1)机器码:机器语言指令,有时也被称为原生码(Native Code),是CPU直接读取运行的机器指令,运行速度最快。2)字节码:是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件,字节码是一种中间码。编译器将源码编译成字节码,字节码在运行时通过JVM(JAVA虚...原创 2018-12-11 18:53:06 · 162 阅读 · 0 评论 -
【JVM】第五章_2 性能调优实战
第五章_2 性能调优实战GC的性能怎么样,我们得有数据才能进行分析。同时还得有分析的步骤。第一步要得到GC的日志,第二步进行分析,第三步进行小步调优对比分析开始之前先说介绍一下两款可视化的分析工具,有了工具就可以事半功倍。1、在线工具:http://gceasy.io/2、GCViewerhttps://github.com/chewiebug/GCViewermvn ...原创 2018-12-11 18:51:47 · 163 阅读 · 0 评论 -
【JVM】第五章_1 故障分析
第五章_1 故障分析这一章就不按照书本来讲了,这里我们重来说来两个重点。1、故障分析(补上第二章落下的内存溢出的案例情况)2、GC两款收集器的性能调优 一、内存溢出模拟jvm垃圾收集其实就是关注的这两块区域,堆和非堆区。1)heap溢出import java.util.ArrayList;import java.util.List;public clas...原创 2018-12-11 18:47:31 · 129 阅读 · 0 评论 -
【JVM】第四章 虚拟机性能监控及故障处理工具
一、概述理论是指导实践的工具,能把理论应用到实践中去,才是我们学习的最终目的。知识、经验是关键的基础,数据是依据,工具是运用知识处理数据的手段。 二、jdk自带的命令行工具集jdk 的安装目录:打开终端,输入:/usr/libexec/java_home -V/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Conte...原创 2018-12-11 18:46:05 · 196 阅读 · 0 评论 -
【JVM】第三章_2 内存分配与回收策略
1、对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够的空间进行分配时,虚拟机将发生一次新生代GC(Minor GC) 2、大对象直接进入老年代所谓的大对象是指,需要大量连续内存空间的java对象。最典型的大对象就是那种很长的字符串以及数组。 3、长期存活的对象将进入老年代1)第一次minor GC 如果在Eden区存活的对象将被移入...原创 2018-12-11 18:40:30 · 95 阅读 · 0 评论 -
【JVM】第三章_1 垃圾收集器
第三章_1 垃圾收集器一、概述垃圾收集GC,这项技术当做java语言的伴生产物。 有三个问题需要回答:1、哪些内存需要回收?1)基于线程隔离的区域(操作数栈、本地变量表这些)不需要回收,因为它的生命周期是基于线程存在的,方法或线程结束,内存自然也跟着回收2)堆空间需要进行回收。堆空间又分为堆区和非堆区,而堆区又分为新生代(朝生夕灭)和老年代。这些空间都需要进行回收。...原创 2018-12-11 18:39:07 · 132 阅读 · 0 评论 -
【JVM】第二章 Java内存区域
1、java内存管理的优势相对于C语言需要开发人员自己手动的管理内存来说,java语言的自动内存回收机制是一大优势。但同时如果生产环境出现了内存溢出和泄露,就需要我们了解jvm的原理,以便更好的应用jvm提高性能和安全。2、运行时数据区域(这是一个理论模型)1)在说每个部分的作用之前说一下线程共享数据区和线程隔离数据区。一个是共享就是这块区域是大家都可以用,一起分享的。一个...原创 2018-12-11 18:28:20 · 114 阅读 · 0 评论 -
【JVM】第一章 走近java
第一章 走近java1、 TIOBE发布的编程语言排行榜,可见java语言的使用者一直都是遥遥领先,2017年、2018年都排名第一位。当然上面我们也可以看到其他一些语言的流行趋势,每种语言都有它擅长的领域。语言没有好坏之分,只有是否更加适合你的应用场景。 2、java语言的优点:1)它摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想。(因为jvm的应用)2)它...原创 2018-12-11 18:22:15 · 128 阅读 · 0 评论 -
【JVM】第十三章 线程安全与锁优化
第十三章 线程安全与锁优化线程安全当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。一、java语言中的线程安全我们下面讨论的线程安全限定于多个线程之间存在共享数据访问的这种情况。如果不共享数据,那么从线程的角度来看它就是安全的。...原创 2018-12-15 17:38:26 · 160 阅读 · 0 评论 -
【JVM】第八章 虚拟机字节码执行引擎
第八章 虚拟机字节码执行引擎 字节码是如何被虚拟机执行从而完成指定功能呢?我来们了解一下jvm虚拟机底层的原理。“虚拟机”是有别与物理机的概念,物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上。而虚拟机的执行引擎是自已实现的,因此可以自行的制定指令集与执行引擎的结构,并且能够执行那些不被硬件直接支持的指令集格式。了解两个概念,解释执行和编译执行。解...原创 2018-12-11 18:56:58 · 142 阅读 · 0 评论