![](https://img-blog.csdnimg.cn/fed6f7ab43814495999606fe30507692.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM
文章平均质量分 75
JVM
扬奇
道阻且长,行则将至!
展开
-
JVM (三)--内存模型、变量可见性、指令重排、内存屏障
Java内存模型Java内存模型(JMM):Java定义的一中抽象规范,用来屏蔽不同硬件和操作系统的内存访问差异,让Java程序在不同平台下都能达到一致的内存访问效果。Java内存图示:1、主内存:线程共享内存,线程读写访问较慢;包括方法区和Java堆,对于一个共享变量(比如静态变量,堆内存中的实例),主内存存有其“本尊”。2、工作内存:线程私有的内存,线程访问较快。对...原创 2018-08-28 22:37:03 · 1030 阅读 · 0 评论 -
JVM (一)--运行整体流程
面试:面试被问到JVM,竟然对JVM这几个字母没反应过来,后面也就答了JVM的内存管理和GC算法,答得模棱两可。写给自己:JVM一直都是Java中很重要基础知识,是面试中必问的知识点。如果连JVM都弄不清楚,还谈什么Java开发。运行流程Java语言宣称:一次编译,到处运行实现如下:1)Java程序经过一次编译后,将Java代码编译为字节码文件(.class文件);2)...原创 2018-08-27 14:09:41 · 1132 阅读 · 0 评论 -
JVM (二)--Java程序编译、类加载及执行
Java程序的编译Java程序的编译是由Java源码编译器来完成,流程图如下:Java程序的执行Java程序的编译是由Java执行引擎来完成,流程图如下: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码编译机制 类加载机制 类执行机制 一、Java源码编译机制Java 源码编译由以下三个过程组成:分析和输入...原创 2018-08-29 11:38:50 · 345 阅读 · 0 评论 -
JVM (四)--垃圾回收(一)
程序计数器、虚拟机栈、本地方法栈这三个区域属于线程私有,只存在于线程的生命周期内,线程结束之后也会消失,因此,不需要对这三个区域进行垃圾回收。垃圾回收主要针对方法区和Java堆进行。一、判断一个对象是否存活1、引用计数算法给对象添加一个引用计数器,当对象增加一个引用时计数器加1,引用失效时计数器减1。引用计数器不为0的对象仍然存活。两个对象出项循环引用的时候,此时引用计数器永远不为...原创 2018-08-29 17:20:02 · 269 阅读 · 0 评论 -
JVM (四)--垃圾收集(二)
一、垃圾收集算法1、标记-清除将存活的对象进行标记,然后清除掉未被标记的对象。不足:标记和清除过程中效率多不高; 会产生大量不连续的内存碎片,导致无法给大对象分配内存。2、标记-整理让所有存活的对象都向一端移动,然后直接清除掉端边界以外的内存。3、复制将内存划分为大小相等的两块,每次只使用一块,当这一块内存用完就将还存活的对象复制到另外一块上面,然后再...原创 2018-08-30 11:05:14 · 215 阅读 · 0 评论