2018年9月4日

jvm垃圾回收

摘要: 对于基于线程存在的PCR以及栈区域,具备确定性。而堆以及方法区则不一样(重点讨论)。 对象已死? 1、引用计数算法(不使用):难以解决对象之间相互循环引用的问题。 2、可达性分析算法:设置GCRoots,搜索引用链,大概图论的可达概念。 都是根据引用? 1、强引用:new出来的,怎样都不会被回收。 阅读全文

posted @ 2018-09-04 14:51 植物大戰僵尸 阅读(102) 评论(0) 推荐(0) 编辑

jvm对象的创建

摘要: 先检查这个对象所代表的类是否已经被加载、解析和初始化过,如果没有在先执行相应的类加载过程。类加载通过后,可以确定所需的内存大小,并在Java堆中分配内存。分配内存的过程要考虑线程安全(指针碰撞,空闲列表)。接着虚拟机将分配到的内存空间都初始化为零值。接着设置对象头信息。最后执行<init>方法按照程 阅读全文

posted @ 2018-09-04 14:46 植物大戰僵尸 阅读(97) 评论(0) 推荐(0) 编辑

jvm运行时数据区

摘要: 1、程序计数器(PCR) JVM就是通过读取程序计数器的值来决定下一条需要执行的字节码指令。 每个线程都需要有一个独立的PCR,各线程间互不影响。 唯一没有内存溢出的区域。 (为了多线程而生的,单线程情况下完全不需要他。程序计数器是每个线程独有的,并非线程共享的,是线程安全的。) 2、栈内存 以帧为 阅读全文

posted @ 2018-09-04 14:32 植物大戰僵尸 阅读(137) 评论(0) 推荐(0) 编辑

导航