![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 80
wenjieyatou
想成为一名会写代码的程序媛~
展开
-
深入理解java虚拟机阅读笔记七:javac编译和JIT编译
javac 编译与 JIT 编译编译过程不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行:其中绿色的模块可以选择性实现。很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如 JavaScript),而下面的那条原创 2018-01-10 15:25:49 · 270 阅读 · 0 评论 -
深入理解java虚拟机阅读笔记五:类的初始化
深入理解 Java 虚拟机类初始化类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的 Java 程序代码。虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化:遇到 new、getstatic、putstatic、invokestatic 这四条字节码指令时,如果类还没有进行过初始化,则需要先触发其初始化。生成这四条指令转载 2018-01-10 14:57:30 · 138 阅读 · 0 评论 -
深入理解java虚拟机阅读笔记六:多态的实现-静态分派和动态分派
多态性实现机制——静态分派与动态分派方法解析Class 文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在 Class 文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。这个特性给 Java 带来了更强大的动态扩展能力,使得可以在类运行期间才能确定某些目标方法的直接引用,称为动态连接,也有一部分方法的符号引用在类加载阶段或第一次使转载 2018-01-10 15:17:07 · 158 阅读 · 0 评论 -
深入理解java虚拟机阅读笔记四:java代码编译和执行过程
Java 代码编译和执行的整个过程Java 代码编译是由 Java 源码编译器来完成,流程图如下所示:Java 字节码的执行是由 JVM 执行引擎来完成,流程图如下所示:Java 代码编译和执行的整个过程包含了以下三个重要的机制:Java 源码编译机制类加载机制类执行机制Java转载 2018-01-10 14:38:22 · 171 阅读 · 0 评论 -
深入理解java虚拟机阅读笔记三:java类加载机制
深入学习JVM3:JVM类加载机制本文的内容是关于JVM如何加载Class文件以及Class文件中的信息进入到虚拟机后会发生什么变化。本文内容主要包括一下这个部分:类加载的时机类加载的过程类加载器概述学计算机的都晓得一句话:“计算机只认识0和1,所以我们写的程序需要被编译器翻译成由0和1构成的二进制格式才能被计算机执行”。但由原创 2018-01-08 19:41:25 · 213 阅读 · 0 评论 -
深入理解java虚拟机阅读笔记二:java自动内存管理机制以及垃圾回收机制
本文是对JVM的经典学籍《深入理解Java虚拟机》中知识学习的总结摘抄,原书内容写的很好,所特意从中摘取自己觉得比较重要的点,不求能够全部掌握所有内容,但至少保证能够在整体轮廓上有所斩获。1. JVM内存区域1.1. 概述对于Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,而且不容易出现内存泄漏和内存溢出问题。原创 2018-01-08 17:28:10 · 299 阅读 · 0 评论 -
深入理解java虚拟机阅读笔记一:java简介
Java 不仅仅是一门编程语言,它还是一个由一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器和大型机等各种场合。时至今日,Java 技术体系已经吸引了近千万软件开发者,这是全球最大的软件开发团队。使用 Java 的设备多达几十亿台,其中包括 8 亿多台个人计算机、21 亿部移动电话及其他手持设备、35 亿原创 2018-01-08 16:31:47 · 179 阅读 · 0 评论 -
深入理解java虚拟机阅读笔记九:Java8内存模型—永久代(PermGen)和元空间(Metaspace)
Java8内存模型—永久代(PermGen)和元空间(Metaspace)一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变转载 2018-01-24 10:24:53 · 642 阅读 · 0 评论 -
深入理解java虚拟机阅读笔记九:记录GC的一些常见概念
说说GC的一些常见概念1. 什么时候会触发Minor GC? Eden区域满了,或者新创建的对象大小 > Eden所剩空间 CMS设置了CMSScavengeBeforeRemark参数,这样在CMS的Remark之前会先做一次Minor GC来清理新生代,加速之后的Remark的速度。这样整体的stop-the world时间反原创 2018-01-22 17:49:01 · 182 阅读 · 0 评论 -
深入理解java虚拟机阅读笔记八:常见的OOM和SOF
遇到的OOM: (1)Java Heap 溢出 Java堆用于存储对象实例,我们只要不断的创建对象,而又没有及时回收这些对象(即内存泄漏),就会在对象数量达到最大堆容量限制后产生内存溢出异常。 (2)方法区溢出 方法区用于存放Class的相关信息,如类名、访问修饰符、常量池、字段描述、方法描述等。异常信息:Java.lang.OutOfMe原创 2018-01-22 17:28:48 · 418 阅读 · 0 评论 -
java8中使用Metaspace就不会出现OOM吗?
关于jvm测试的一些代码我统一整理在了git上,我的git地址为:https://github.com/wenjieyatou/jvmtest在java8中,Metaspace的出现,使我们现在不会再遇到java.lang.OutOfMemoryError: PermGen问题,但是我们要记住,这个新特性并不会使类加载导致的内存泄露就此消失。(一)Metaspace的简单介绍 (1)内存模型:大部...原创 2018-05-16 16:54:42 · 1975 阅读 · 0 评论