JVM
zhumqs
这个作者很懒,什么都没留下…
展开
-
Java虚拟机(一)------JVM内存结构
转载自:https://blog.csdn.net/u010425776/article/details/51170118JVM内存结构Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区。注意和Java内存模型(JMM)的区别!下面对这五个区域展...转载 2018-07-30 21:14:06 · 174 阅读 · 0 评论 -
JVM 内存模型概述
转载自:https://blog.csdn.net/justloveyou_/article/details/71189093 摘要: 我们都知道,Java程序在执行前首先会被编译成字节码文件,然后再由Java虚拟机执行这些字节码文件从而使得Java程序得以执行。事实上,在程序执行过程中,内存的使用和管理一直是值得...转载 2018-08-10 10:38:05 · 131 阅读 · 0 评论 -
深入理解Java对象的创建过程:类的初始化与实例化
转载自:https://blog.csdn.net/justloveyou_/article/details/72466416 摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行...转载 2018-08-10 10:38:36 · 125 阅读 · 0 评论 -
Java虚拟机(十三)------基于栈的字节码解释执行
当知道虚拟机是如何调用方法之后,接着就主要关注虚拟机是如何执行方法中的字节码指令的。 许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,本文主要探讨Java在解释执行时,虚拟机执行引擎是如何工作的。解释执行Java语言经常被人们定位为“解释执行”的语言,在Java初生的JDK 1.0时代,这种定义还算...原创 2018-08-06 11:11:28 · 732 阅读 · 2 评论 -
Java虚拟机(十四)------Javac编译与JIT编译
编译器Java语言的“编译期”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器把*.java文件转变成*.class文件的过程;也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compiler)把字节码转变成机器码的过程;还可能是指使用静态提前编译器(AOT编译器,Ahead Of Time Compiler)直接把*.java文件编译成本地机器代码的过...原创 2018-08-06 11:40:43 · 199 阅读 · 0 评论 -
Java虚拟机(十五)------编译期优化之Java语法糖
语法糖语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。 通常来说,使用语法糖能够增加程序的可读性,它们或能提高效率,或能提升语法的严谨性,或能减少编码出错的机会。 Java中最常用的语法糖主要是前面提到过的泛型(泛型并不一定都是语法糖实现,如C#的泛型就是直接由CLR支持的)、 变长参数、 自动装...原创 2018-08-06 14:03:37 · 419 阅读 · 0 评论 -
JVM类生命周期概述:加载时机与加载过程
转载自:https://blog.csdn.net/justloveyou_/article/details/72466105 摘要: 我们知道,一个.java文件在编译后会形成相应的一个或多个Class文件,这些Class文件中描述了类的各种信息,并且它们最终都需要被加载到虚拟机中才能被运行和使用。事实上,虚拟机...转载 2018-08-13 10:29:17 · 130 阅读 · 0 评论 -
深入理解Java类加载器(一):Java类加载原理解析
转载自:https://blog.csdn.net/justloveyou_/article/details/72217806 摘要: 每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这个异常背后涉及到的是Java技术体系中的类加载机制。本文简述了JVM三种预定义...转载 2018-08-13 10:29:59 · 18084 阅读 · 5 评论 -
深入理解Java类加载器(二):线程上下文类加载器
转载自:https://blog.csdn.net/justloveyou_/article/details/72231425 摘要: 博文《深入理解Java类加载器(一):Java类加载原理解析》提到的类加载器的双亲委派模型并不是一个强制性的约束模型,而是Java设计者推荐给开发者的类加载器的实现方式。在Java...转载 2018-08-13 10:31:31 · 208 阅读 · 0 评论 -
Java虚拟机(十一)------运行时栈帧结构
运行时栈帧结构栈帧(Stack Frame) 是用于虚拟机执行时方法调用和方法执行时的数据结构,它是虚拟栈数据区的组成元素。每一个方法从调用到方法返回都对应着一个栈帧入栈出栈的过程。每一个栈帧在编译程序代码的时候所需要多大的局部变量表,多深的操作数栈都已经决定了,并且写入到方发表的 Code 属性之中,一次一个栈帧需要多少内存,不会受到程序运行期变量数据的影响,仅仅取决于具体的虚拟机实现。...原创 2018-08-05 18:01:10 · 211 阅读 · 0 评论 -
Java虚拟机(十二)------方法调用和多态实现机制
方法调用方法调用并不等同于方法执行。方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍、 最频繁的操作。 1. 静态解析Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址,这个特性给Java...原创 2018-08-05 19:36:32 · 199 阅读 · 0 评论 -
Java虚拟机(十)------类加载器
类与类加载器把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。 实现这个动作的代码模块称为“类加载器”。类加载器的作用:将class文件加载进JVM的方法区,并在方法区中创建一个java.lang.Class对象作为外界访问这个类的接口。 类与类加载器的关系:比较两个类是否相等,只有当这两...原创 2018-08-04 19:42:43 · 215 阅读 · 0 评论 -
Java虚拟机(二)------HotSpot虚拟机创建对象的过程
转载自:https://blog.csdn.net/u010425776/article/details/51190801对象的创建过程当虚拟机遇到一条含有new的指令时,会进行一系列对象创建的操作: 检查常量池中是否有即将要创建的这个对象所属的类的符号引用; 若常量池中没有这个类的符号引用,说明这个类还没有被定义!抛出ClassNotFoundException; 若常量池...转载 2018-07-30 21:12:23 · 147 阅读 · 0 评论 -
Java虚拟机(三)------JVM垃圾收集策略
转载自:大闲人柴毛毛原链接:https://blog.csdn.net/u010425776/article/category/3215431Java虚拟机的内存区域分为五个部分,分别是:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。这五个区域既然是存储空间,那么为了避免Java虚拟机在运行期间内存存满的情况,就必须得有一个垃圾收集者的角色,不定期地回收一些无效内存,以保障Ja...转载 2018-07-29 20:51:18 · 143 阅读 · 0 评论 -
Java虚拟机(四)------对象内存的分配策略
转载自:https://blog.csdn.net/u010425776/article/details/51192448Java所承诺的自动内存管理主要是针对对象内存的回收和对象内存的分配。在Java虚拟机的五块内存空间中,程序计数器、Java虚拟机栈、本地方法栈内存的分配和回收都具有确定性,一般在编译阶段就能确定需要分配的内存大小,并且由于都是线程私有,因此它们的内存空间都随着线程的创...转载 2018-07-30 21:11:41 · 155 阅读 · 0 评论 -
Java虚拟机(五)------HotSpot垃圾收集器详解
转载自:https://blog.csdn.net/u010425776/article/details/51199767HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,没有最好的垃圾收集器,只有最适合的垃圾收集器。我们可以根据自己实际的应用需求选择最适合的垃圾收集器。根据新生代和老年代各自的特点,我们应该分别为它们选择不同的收集器,以提升垃圾回收效率。 新生代...转载 2018-07-30 21:10:52 · 156 阅读 · 0 评论 -
Java虚拟机(六)------JVM性能调优实战
本文转载自:https://blog.csdn.net/u010425776/article/details/51232463如何在高性能服务器上进行JVM调优?为了充分利用高性能服务器的硬件资源,有两种JVM调优方案,它们都有各自的优缺点,需要根据具体的情况进行选择。1. 采用64位操作系统,并为JVM分配大内存我们知道,如果JVM中堆内存太小,那么就会频繁地发生垃圾回收,而垃圾...转载 2018-08-04 14:42:56 · 204 阅读 · 0 评论 -
Java虚拟机(七)------Class文件结构
文章转载自:https://blog.csdn.net/u010425776/article/details/51245055什么是JVM的“无关性”?Java具有平台无关性,也就是任何操作系统都能运行Java代码。之所以能实现这一点,是因为Java运行在虚拟机之上,不同的操作系统都拥有各自的Java虚拟机,因此Java能实现“一次编写,处处运行”。而JVM不仅具有平台无关性,还具有语...转载 2018-08-04 14:45:13 · 156 阅读 · 0 评论 -
Java虚拟机(八)------类加载的时机
文章转载自:https://blog.csdn.net/u010425776/article/details/51251430类的生命周期一个类从加载进内存到卸载出内存为止,一共经历7个阶段: 加载——>验证——>准备——>解析——>初始化——>使用——>卸载其中,类加载包括5个阶段: 加载——>验证——>准备——>解析——&g...转载 2018-08-04 14:48:27 · 122 阅读 · 0 评论 -
Java虚拟机(九)——类加载的过程
文章转载自:https://blog.csdn.net/u010425776/article/details/51254858通过之前的介绍可知,类加载过程共有5个步骤,分别是:加载、验证、准备、解析、初始化。其中,验证、准备、解析称为连接。下面详细介绍这5个过程JVM所做的工作。加载注意:“加载”是“类加载”过程的第一步,千万不要混淆。1. 加载的过程在加载过程中,JVM主要做...转载 2018-08-04 14:53:59 · 151 阅读 · 0 评论 -
图解Java 垃圾回收机制
转载自:https://blog.csdn.net/justloveyou_/article/details/71216049 摘要: Java技术体系中所提倡的 自动内存管理 最终可以归结为自动化地解决了两个问题:给对象分配内存 以及 回收分配给对象的内存,而且这两个问题针对的内存区域就是Java内存模型中的 堆...转载 2018-08-13 10:32:05 · 167 阅读 · 0 评论