
深入理解jvm
文章平均质量分 90
corefuture
啦啦啦
展开
-
深入理解jvm-走进java
在使用java进行编程时,我们先需要下载jdk,那么jdk是什么?我们可以把Java程序设计语言、java虚拟机、java API类库这三部分称为JDK(Java Development Kit),JDK是用于支持java程序开发的最小环境。另外,可以把Java API类库中的Java SE API子集和java虚拟机这两部分称为JRE,JRE是支持Java程序运行的标准环境。java技术体系原创 2017-04-09 11:03:51 · 336 阅读 · 0 评论 -
深入理解java虚拟机—类文件结构
引言我们知道c语言的编译过程如下:预编译->编译生成汇编代码->汇编生成机器代码->链接生成可执行文件。c语言没有跨平台性的原因就是因为c语言是根据计算机cpu的指令生成的机器代码,所以它生成的可执行文件只有在相同指令集的环境下来能运行。 而java语言具有跨平台型,java编译之后是生成的字节码,通过java虚拟机来解释运行字节码(也会做后编译)。每个平台的java虚拟机不同,但是不同的虚拟机可原创 2017-10-24 19:53:31 · 269 阅读 · 0 评论 -
深入理解java虚拟机-java内存区域
Java把内存的管理交给了虚拟机,由虚拟机来自动管理内存。所以需要了解java虚拟机内存的管理机制,才能更好的编写程序。内存区域java虚拟机在执行程序时会把它所管理的内存分为以下区域:方法区虚拟机栈本地方法栈堆程序计数器程序计数器: 程序计数器是一个很小的内存空间,我们知道程序是有一大堆指令和数据构成的,程序计数器则是来指向当前正在执行指令的地址;但是有一点要注意,如原创 2017-10-14 16:32:10 · 247 阅读 · 0 评论 -
深入理解java虚拟机—虚拟机类加载机制
引言虚拟机的类加载机制主要是讲虚拟机将class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机使用的java类。类加载的生命周期如下:加载,验证,准备,解析,初始化,使用,卸载。验证、准备、解析这三步又被称为连接,加载、验证、准备、初始化和卸载这五个阶段的顺序是固定的,但是解析可能会在初始化后再开始,这里的“开始”指的是可能会交叉运行。类加载过程加载 这个加载只是类加载原创 2017-10-28 12:33:44 · 199 阅读 · 0 评论 -
深入理解java虚拟机-垃圾回收机制(1)
垃圾回收机制java中取消了指针操作,采用java虚拟机自动管理对象。Garbage Collection(GC)也就是所谓的垃圾回收器在java之前就得到了使用,1960年诞生的Lisp是第一门使用内存动态分配和垃圾回收的语言。如何判断对象是否存活。(1)引用计数算法。(Jvm不用这个算法) 给对象添加一个引用计数器,用一个地方引用它,计数器值就+1,引用失效一个,计数器就减1.当原创 2017-10-21 14:19:15 · 310 阅读 · 0 评论 -
深入理解java虚拟机—虚拟机字节码执行引擎
引言调用一个方法就会将该方法(将方法的各种信息封装成栈帧)进行压栈,方法结束就会出栈。而栈帧是支持方法调用和执行的基础结构,是虚拟机栈的元素,栈帧存储了一个方法的局部变量表,操作数栈,动态连接和方法返回地址信息等其他信息。在编译时就已经确定好了局部变量表的大小和操作数栈的大小。局部变量表局部变量表是用来存方法中的参数、变量,以slot为单位,this关键字是局部变量表的第一个参数(索引为0),这是编原创 2017-10-29 15:35:13 · 528 阅读 · 0 评论 -
深入理解java虚拟机—垃圾回收机制(2)
垃圾回收机制(2)垃圾收集器虚拟机中会维护很多种垃圾回收器,在HotSpot虚拟机中,有:Serial、ParNew、Paraller Scavenge、CMS、Serial Old(MSC)、Parallel Old,G1这些垃圾回收器。 (1)Serial收集器(新生代,复制算法) Serial的意思是串行,会让我们想到是用单线程去做垃圾收集,但是最重要的意义是在于它工作时需要暂停所有的线程原创 2017-10-22 13:53:29 · 323 阅读 · 0 评论 -
深入理解java虚拟机—编译
java 编译原创 2017-11-04 08:40:24 · 524 阅读 · 0 评论 -
深入理解java虚拟机—java内存模型与线程
引言内存模型可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写的过程抽象。不同架构的物理机器有着不同的内存模型,java用定义一种内存模型来屏蔽硬件和操作系统的内存访问差异。主内存与工作内存java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存到内存,从内存中取变量这样的底层细节。这里的变量指的是线程共享的变量。 JMM(java内存模型)规定了所有变量都存在主内原创 2017-11-04 18:23:07 · 291 阅读 · 0 评论