Java虚拟机学习
文章平均质量分 72
Java内存模型, 虚拟机相关知识, 性能调优等学习
七夜丶雪
听雪楼前听雪落,彼岸花开彼岸零
展开
-
Java GC - HotSpot垃圾收集器详细介绍
HotSpot虚拟机垃圾收集器 上图为JDK 1.7 Update14之后的HotSpot虚拟机包含的所有收集器, 如果两个收集器之中存在连线, 就说明它们可以搭配使用。 Serial收集器 单线程收集器 执行GC时会暂停其他所有工作线程(会造成应用暂停) 新生代收集器 复制算法 简单而高效(与其他收集器单线程相比) ParNew收集器 Serial收集器的多线程版本 新生代收集器 采...原创 2018-09-27 09:51:54 · 191 阅读 · 0 评论 -
深入理解Java虚拟机—JVM内存结构
1、概述 jvm内存分为线程共享区和线程独占区,线程独占区主要包括虚拟机栈、本地方法栈、程序计数器;线程共享区包括堆和方法区 2、线程独占区 虚拟机栈 虚拟机栈描述的是java方法执行的动态内存模型,每个方法执行,都会创建一个栈帧,伴随着方法从创建到执行完成。用于存储局部变量表,操作数栈,动态链接,方法出口等。 本地方法栈 本地方法执行 程序计数器 3、...原创 2018-03-12 21:21:00 · 164 阅读 · 0 评论 -
JVM类加载(1)—加载
1、加载: 查找并加载类,将.class文件中的二进制数据读入到内存中,放在运行时数据区的方法内,然后在堆内创建一个java.lang.class对象用来封装类在方法区内的数据结构。并且向程序员提供了访问方法区内的数据结构的接口,程序中类的实例通过getClass()方法获取类在堆中的class对象,通过class对象可以完成对方法区中类数据结构的访问。 class文件的加载方式: (1)、...原创 2017-05-07 20:40:00 · 147 阅读 · 0 评论 -
JVM类加载(2)—连接
2、连接 连接就是将已经加载到内存中的类的二进制数据合并到Java虚拟机的运行时环境中去,加载阶段尚未完成,连接阶段可能已经开始。连接阶段包含验证、准备、解析过程。 2.1、验证 验证.class文件正确性,验证阶段大致会完成下面4个阶段的检验动作 (1)、文件格式验证,这一阶段主要验证字节流是否符合Class文件的格式规范,并且能被当前版本的虚拟机处理。 (2)、元数据验证,第二阶段是...原创 2017-05-07 20:46:00 · 104 阅读 · 0 评论 -
JVM类加载(3)—初始化
3、初始化 在准备阶段,变量已经赋过一次系统要求的初始值,而在初始化阶段,则根据程序员通过程序制定的主观计划去初始化类变量(静态变量)和其他资源,或者从另外一个角度表达:初始化过程是执行类构造器<client>()方法的过程。<client>()方法: <client>()方法是由编译器自动收集类中的所有类变量(静态变量)的赋值动作和静态语句块(static...原创 2017-05-07 20:54:00 · 164 阅读 · 0 评论 -
JVM类加载(4)—加载器
定义: 虚拟机设计团队把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称之为“类加载器“。 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器都有一个独立的类名称空间。简单来讲,比较两个类是否“相等”,必须是这两个类由同一个类加...原创 2017-05-07 21:01:00 · 93 阅读 · 0 评论 -
Java内存区域与内存溢出异常
运行时数据区域 程序计数器 可以看作当前线程所执行代码的行号指示器 线程独占/私有 每个线程都有各自的程序计数器 执行java方法时记录字节码指令地址,执行native方法时为空(Undefined) 虚拟机中唯一一个没有OutOfMemoryError错误的区域 Java虚拟机栈 线程独占/私有 描述Java方法执行的内存模型 局部变量表 存放编译器可知的各种基本类型 b...原创 2018-08-19 21:07:04 · 178 阅读 · 0 评论 -
Java与线程
线程的实现 使用内核线程实现 使用用户线程实现 使用用户线程加轻量级进程混合实现 Java线程的实现 JDK1.2之前是基于成为”绿色线程”(Green Threads)的用户线程实现的 JDK1.2及之后, 线程模型替换为基于操作系统原生线程模型来实现 Java线程调度 线程调度是指系统为线程分配使用权的过程, 主要调度方式有两种, 分别是协同线程调度(Cooperative ...原创 2018-09-16 11:20:07 · 150 阅读 · 0 评论 -
Java-垃圾回收(GC)详解
文章目录概述判断对象是否存活算法引用计数算法(Reference Counting)可达性分析算法(Reachability Analysis)引用类型回收方法区垃圾收集算法标记 - 清除算法复制算法标记 - 整理算法分代收集算法 概述 GC需要完成的3件事 : 哪些内存需要回收 什么时候回收 如何回收 判断对象是否存活算法 引用计数算法(Reference Counting) 给对象中添加...原创 2018-09-26 09:57:45 · 248 阅读 · 0 评论