
JVM
Mutou_ren
这个作者很懒,什么都没留下…
展开
-
为什么JVM分代机制中的新生代要分两个survivor
我们知道在基于分代机制的JVM内存模型中,新生代被分成了eden、from、to三个区,占比8:1:1,from和to完全等价可以互换,平时使用eden+from,GC时将存活对象复制到to区,然后清空eden+from,from与to身份互换。为什么要分from+to两个区?只分一个比如只分为eden+from不是也可以吗?GC时将存活对象复制到from然后清空eden不就可以了吗?传统复制...原创 2019-12-30 21:54:16 · 883 阅读 · 0 评论 -
this的创建时机
在看HashMap源码的时候,发现注解中有提到Map m = Collections.synchronizedMap(new HashMap(...));感到陌生去翻了下源码,发现了public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) { return new Synchroniz...原创 2019-03-31 19:00:51 · 346 阅读 · 0 评论 -
JVM类加载机制
虚拟机把描述类的Class文件加载到内存中,并对数据进行校验、转换解析和初始化,最后形成能够被虚拟机直接使用的Java类型,叫做JVM的加载机制。类的生命周期加载验证准备解析初始化使用卸载其中验证、准备和解析为连接过程;解析有可能在初始化之后进行,这是因为支持Java的运行时绑定。必须进行初始化的五个场景有且仅有以下五个场景,若类没有进行初始化,则必须立即初始化。遇到...原创 2018-12-18 19:01:18 · 146 阅读 · 0 评论 -
自动内存管理机制
虚拟机运行时数据区程序计数器虚拟机栈/本地方法栈方法区堆区程序计数器每个线程都有一个独立的计数器,并与其他线程隔离,通过改变计数器的值进行字节码指令的操作,实现分支、跳转、循环、异常处理、线程恢复……等功能。虚拟机栈线程私有,生命周期与线程相同,每个方法执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口信息等。每个方法的调用(入栈)直至执行完成(出栈...原创 2018-12-03 16:36:00 · 303 阅读 · 0 评论 -
类文件结构
深入理解Java虚拟机类文件结构虚拟机虚拟机作为一个通用的、与系统无关的执行平台,不与包括Java在内的任何一门语言绑定,只与.class文件关联,即无论任何语言都可以表示为虚拟机所理解的.class文件。.class任何一个.class文件都对应着一个唯一的类或接口的定义信息,但反过来并非如此,某些类或接口可以通过类加载器直接生成。class文件是一种以8字节为基础单位的二进制流,...原创 2018-12-05 17:12:38 · 153 阅读 · 0 评论 -
JVM基础总结
https://blog.youkuaiyun.com/zhyhang/article/details/17233251转载 2018-12-04 12:01:04 · 152 阅读 · 0 评论 -
JVM垃圾收集器
HotSpot垃圾回收器在垃圾回收语境下:并行:多个垃圾回收线程并行工作,用户线程处于等待并发: 垃圾回收线程与用户线程同时执行(不一定并行),两个线程运行在不同CPU上。新生代收集器Serial单线程收集器,工作时会暂停所有工作线程,虽然会停顿时间较长但简单高效。client下默认的新生代收集器,因为桌面端内存不大,停顿时间很短。ParNewSerial的多线程版本,se...原创 2018-12-04 15:45:39 · 537 阅读 · 0 评论 -
JVM垃圾回收算法
finalize()由于垃圾回收期只知道回收new分配的内存,其他内存不知道如何释放,因此定义该方法,其功能假定为:一旦垃圾回收器准备好释放对象占用的储存空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。java语言规范并不能保证该方法一定能及时的调用甚至无法保证被调用,因为垃圾回收动作仅跟内存有关,有可能垃圾回收永远不会进行。对...原创 2018-12-04 11:07:39 · 223 阅读 · 0 评论