jVM
文章平均质量分 69
为了生活
一片星空~
毕业l来北京快一年的菜鸟
展开
-
java对象的存在周期
Java 对象的生命周期 在Java中,对象的生命周期包括以下几个阶段: 创建阶段(Created) 应用阶段(In Use) 不可见阶段(Invisible) 不可达阶段(Unreachable) 收集阶段(Collected) 终结阶段(Finalized) 对象空间重分配阶段(De-allocated) 1.创建阶段(Created) 在创建阶段系统通过下面的几个步骤来完成对象的创建过程 1.1为对象分配存储空间 1.2开始构造对象 1.3从原创 2020-06-29 14:52:37 · 287 阅读 · 0 评论 -
jvm-回收对象(二)
总所周知,Java将程序员从内存管理中解放出来,使得我们在编写代码的时候不用手动的分配和释放内存,内存管理的任务由JVM承担起来。本文就将讲解JVM在回收对象之前,如何判断一个对象是否应该被回收。 在此之前,我们先来复习一个和Java对象回收有关的知识,那便是finalize方法,这是一个在Object类中定义的方法,如果我们重写了finalize方法,那么在对象被回收之前将会调用finalize方法,如果我们在finalize方法中将对象和某个还在生命周期的对象关联上,那么这个对象还有可能在回收之前被复活转载 2020-07-01 15:32:45 · 223 阅读 · 0 评论 -
jvm-回收对象(一)
Java GC如何判断对象是否为垃圾 查找内存中不再使用的对象 引用计数法 引用计数法就是如果一个对象没有被任何引用指向,则可视之为垃圾。这种方法的缺点就是不能检测到环的存在。 2.根搜索算法 根搜索算法的基本思路就是通过一系列名为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。 引用计数法 下面通过一段代码来对比说明: 1 2 3 4 5 6 7 8 9 1转载 2020-07-01 15:27:41 · 120 阅读 · 0 评论 -
jvm-类加载机制
当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。 一、类加载过程 1.加载 加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。 类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器也是前面所有程序运行的基础,JVM提转载 2020-07-01 15:15:13 · 124 阅读 · 0 评论 -
JVM结构、GC工作机制详解
外话:最近在应聘阿里2015暑期实习,感触颇多。机会总是留给有准备的人的,所以平常一定要注意知识的巩固和积累。知识的深度也要有一定的理解,不比别人知道的多,公司干嘛选你?关于JVM和GC,我相信学Java的绝大部分人都听过,很多公司的面试官都爱问,一开始我也很头痛,问这么底层干什么,所以我每次面试也只是看看答案敷衍了事。最近面完阿里感觉真不能这样,知识不仅要知其然,还要知其所以然。其实弄懂了JVM和GC,对我们理解很多java知识都有帮助。网上有很多关于GC和JVM的文章,这篇博文主要是根据我最近看《深入理转载 2020-07-01 15:05:34 · 238 阅读 · 1 评论