深入理解JVM
文章平均质量分 93
json_it学习笔记
纸上得来终觉浅,绝知此事要躬行
展开
-
深入理解JVM - Java 内存区域与内存溢出异常
本章节及以后所提及的JVM,均为Sun HotSpot JVM。【其他比较著名的JVM有BEA和IBM的JVM】1、Java虚拟机运行时数据区上图来源于网络,感谢1.1、程序计数器[线程私有]程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器在工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分原创 2017-12-25 10:51:46 · 347 阅读 · 0 评论 -
深入理解JVM - 类文件结构
详细请阅读《深入理解Java虚拟机》第六章节。1、概述平台无关性(Write Once ,Run anyWhere)、语言无关性(让其他语言运行在Java虚拟机之上,如Groovy、Scala、JRuby、Jython、Clojure等)的基础是虚拟机和字节码文件。Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联。原创 2018-01-02 14:13:19 · 284 阅读 · 0 评论 -
深入理解JVM - 垃圾收集器与内存分配策略
上一篇介绍了Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程生而生,随线程灭而灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行入栈和出栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就是已知的。因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多的考虑内存回收的问题,因为随着方法或线程的结束,这些内存自然就回收了。而Java堆和原创 2017-12-26 11:02:15 · 1520 阅读 · 0 评论 -
深入理解JVM - 编译期/运行期优化
----------------------------编译期优化--------------------------------------1、概述(编译期)Java语言的“编译期”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器(Javac编译器)把Java文件转变为class文件的过程;也可能是指虚拟机的后端运行期编译器(JIT编译器)把字节码转变为机器码的过程;还可能是原创 2018-01-31 15:11:33 · 1398 阅读 · 0 评论 -
深入理解JVM - 虚拟机字节码执行引擎
执行引擎是Java虚拟机最核心的组成部分之一,输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。1、栈帧栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始至执行完成的过程,都对应了一个栈帧在虚拟机栈里面从入栈到出栈的过程。在原创 2018-01-24 15:40:42 · 287 阅读 · 0 评论 -
深入理解JVM - 虚拟机类加载机制
在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,在Java语言里面,类型的加载、连接和初始化都是在运行期间完成的,运行期间的动态加载和动态连接使Java天生具备可以动态扩展的原创 2018-01-19 15:18:36 · 193 阅读 · 0 评论 -
深入理解JVM - Java内存模型与线程
1、硬件的效率与一致性由于计算机的存储设备与处理器的运算速度有好几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无须等待缓慢的内存读写了。基于高速缓存的存储交互很好的解决了处理器与内存的速度矛盾,但是也为计算机系统带来了更...原创 2018-02-07 16:55:09 · 1328 阅读 · 1 评论 -
线程安全与锁优化
1、概述面向过程的编程思想:站在计算机的角度去抽象和解决问题,以算法为核心,把数据和过程分别作为独立的部分来考虑,数据代表问题空间中的客体,程序代码则用于处理这些数据。面向对象的编程思想:站在现实的角度去抽象和解决问题,把数据和行为都看做对象的一部分,这样程序猿能以符合现实世界的思维方式去编写和组织程序。对于“高效并发”,首先要保证并发的正确性,然后在此基础上实现高效。2、线程安全《Java并发编...原创 2018-02-09 15:27:21 · 291 阅读 · 0 评论