
JVM
程序蛇
这个作者很懒,什么都没留下…
展开
-
Java内存区域划分
一次Java程序的运行过程首先需要将源代码编译为字节码,然后字节码通过类加载器被加载到内存,然后解析器解析字节码指令转换为操作系统可执行的机器码,融合原生库,提交给操作系统运行。其中将字节码加载到内存,这个内存就是该篇重点。通过上述我们可以得知:Java程序运行于JVM内存之上的,JVM会将这个内存划分为不同区域以方便管理,但是不同版本的JDK内存模型也不同,本篇以JDK1.8为准。我们可...原创 2019-10-13 10:37:18 · 134 阅读 · 0 评论 -
JVM核心之类加载机制
类加载全过程JVM把class文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以直接执行的二进制机器码:①加载:其本质是将.class字节码加载到内存,其字节码的来源可以是各种形式,例如:本地的字节码,通过网络获取的字节码(例如通过leetCode在线编译获取字节码),jar包等。加载后再将这些二进制静态字节码数据转换为方法区中的运行时数据结构,同时在堆中生成一个代表这个类的jav...原创 2019-09-11 11:48:38 · 137 阅读 · 0 评论 -
JVM核心之类加载器
类加载器的作用将class字节码加载到内存,并将这些静态数据转换成方法区中的运行时数据结构,同时在堆中生成一个该类的java.lang.Class对象,用于访问方法区中的运行时数据结构。类缓存一旦某个类被加载到类加载器,它将维持加载一段时间,这也就是类缓存。若没有缓存机制,同一个类每次主动引用时都需要重新加载,太消耗时间和资源。*JVM垃圾回收器可以回收这些Class对象。类加载器层次结...原创 2019-09-11 17:49:47 · 160 阅读 · 0 评论 -
谈谈你对Java平台的理解
提到这个问题,我们首先能够想到的是Java平台的一次编译,到处运行。其次GC,异常处理,泛型等也是很显著的特性,本篇主要着重于跨平台。相信只要接触过Java的同学,都对JDK、JRE有一定的了解。JRE包含了JVM、Java类库以及一些模块等,JDK则包含了JRE、编译器、各种诊断工具等。这里先抛出一个问题Java是属于编译执行还是解释执行?正常情况下,我们开发的Java源代...原创 2019-10-07 21:17:54 · 129 阅读 · 0 评论 -
类加载机制
在开篇我们先回忆一下Java程序的运行过程,首先将Java源代码编译为字节码,然后类加载器将字节码加载到内存,然后解释器解析字节码并转换为机器码,融合原生库,提交给操作系统执行。上述过程中,"类加载器将字节码加载到内存"可以称之为类加载阶段,我们之所以能够反射调用JVM内存中的Class对象,依靠的便是类加载机制。类加载的流程主要分为三个步骤:加载、链接、初始化。下面是每个步骤的详细描述......原创 2019-10-08 18:44:03 · 155 阅读 · 0 评论