
JVM
升级中的小码农
这个作者很懒,什么都没留下…
展开
-
HotSpot垃圾回收算法实现细节和经典收集器
文章目录HotSpot的垃圾回收算法实现细节根节点枚举 HotSpot的垃圾回收算法实现细节 根节点枚举 我们前面介绍了固定可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中,尽管目标明确,但查找过程要做到高效并非一件容易的事情,现在Java应用越做越大,光是方法区的大小就常有数百上千兆。里面的类、常量恒河如沙,若要逐个检查以这里为起源的引用肯定得消耗不少时间。 迄今为止所有收集器在根节点枚举这一步骤时都是必须暂停用户线程的,因此也会面临和整理内存原创 2020-12-19 23:34:55 · 183 阅读 · 4 评论 -
JVM对象回收依据和垃圾回收算法
文章目录对象回收依据引用计数法可达性分析算法Java中的GC Roots对象 对象回收依据 前面介绍的Java内存运行时区域的各个部分中,程序计数器、虚拟机栈、本地方法栈会随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出执行着出栈和入栈的操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由即时编译器进行一些优化,但在基于概念模型的讨论里,答题上可以认为是编译期可知的),因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,当方法结束或线程结原创 2020-12-10 22:27:53 · 176 阅读 · 0 评论 -
详解JVM中的Java对象
文章目录对象的创建第一步:对象内存的分配指针碰撞(Bump the Pointer)空闲列表(Free List)内存分配的线程安全问题第二步:对象属性的初始化第三步:对象构造函数的执行对象的内存布局 对象的创建 虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符号引用,并检查符号引用代表的类是否被加载、解析、初始化,若没有则先进行类加载。如果没有加载,需要先进行类加载。 第一步:对象内存的分配 类加载检查通过后,虚拟机为新生对象分配内存,对象所需内存大小在类加载完成后便可完全确定。分配内存的任原创 2020-11-23 17:50:39 · 290 阅读 · 0 评论 -
JVM运行时数据区域以及javap的使用
文章目录JVM内存结构图程序计数器Java虚拟机栈局部变量表操作数栈动态连接方法的返回地址本地方法栈方法区运行时常量池Java堆JDK7和JDK8常量池的对比直接内存 JVM内存结构图 程序计数器 程序计数器(Program counter Register,也叫PC寄存器)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过该改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、原创 2020-11-16 20:40:51 · 289 阅读 · 0 评论