jvm
lopeasd
这个作者很懒,什么都没留下…
展开
-
java内存结构
首先了解内存结构,内存模型,以及对象模型的区别推荐阅读什么是java内存模型JVM内存结构 VS Java内存模型 VS Java对象模型一、jvm运行时数据区域Native Interface本地接口本地接口的作用是融合不同的编程语言为 Java 所用,它的初衷是融合 C/C++程序,Java 诞生的时候是 C/C++横行的时候,要想立足,必须有调用 C/C++程序...原创 2019-07-15 14:50:48 · 159 阅读 · 0 评论 -
运行时常量池,字符串常量池
class常量池class常量池简介:我们写的每一个Java类被编译后,就会形成一份class文件;class文件中除了包含类的版本、字段、方法、接口等描述信息外,还有一项信息就是常量池(constant pool table),用于存放编译器生成的各种字面量(Literal)和符号引用(Symbolic References);每个class文件都有一个class常量池。...转载 2019-07-15 18:08:54 · 734 阅读 · 0 评论 -
对象的生存死亡
判断一个对象是否可被回收1. 引用计数算法为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。在两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。正是因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。public class ReferenceCountExample {...转载 2019-07-16 11:16:16 · 121 阅读 · 0 评论 -
HotSpot虚拟机主要参数
JVM参数分类JVM参数分为标准参数和非标准参数:标准参数: "-"开头的参数,如-client, -server等 非标准参数: "-X"和"-XX"开头的参数,如-Xmx, -XX:+DisableExplicitGC或者简单分为三类:"-"开头的参数 :所有的JVM实现都必须实现这些参数的功能,而且向后兼容; "-X"开头的参数 :默认jvm实现这些参数的功能,但是并...原创 2019-07-23 16:32:46 · 218 阅读 · 0 评论 -
内存分配策略
Major GC 和Full GCMajor GC通常是跟full GC是等价的,收集整个GC堆。但因为HotSpot VM发展了这么多年,外界对各种名词的解读已经完全混乱了,当有人说“major GC”的时候一定要问清楚他想要指的是上面的full GC还是old GC。Partial GC:并不收集整个GC堆的模式Young GC:只收集young gen的GC Old GC:只...转载 2019-07-25 19:30:06 · 239 阅读 · 0 评论 -
类加载过程
类的生命周期系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。类加载过程包含了加载、验证、准备、解析和初始化这 5 个阶段。1. 加载加载是类加载的一个阶段,注意不要混淆。加载过程完成以下三件事:通过类的完全限定名称获取定义该类的二进制字节流。 将该字节流表示的静态存储结构转换为...原创 2019-07-26 10:46:48 · 147 阅读 · 0 评论 -
clinit和init
在编译生成class文件时,会自动产生两个方法,一个是类的初始化方法<clinit>, 另一个是实例的初始化方法<init><clinit>方法的执行时期类初始化阶段(该方法只能被jvm调用, 专门承担类变量的初始化工作)在jvm第一次加载class文件时调用,包括静态变量初始化语句和静态块的执行类的初始化时机:1.主动引用 遇到 n...原创 2019-07-26 13:16:51 · 557 阅读 · 0 评论 -
类加载器
类与类加载器两个类相等,需要类本身相等,并且使用同一个类加载器进行加载。这是因为每一个类加载器都拥有一个独立的类名称空间。这里的相等,包括类的 Class 对象的 equals() 方法、isAssignableFrom() 方法、isInstance() 方法的返回结果为 true,也包括使用 instanceof 关键字做对象所属关系判定结果为 true。类加载器分类从 Jav...原创 2019-07-27 10:40:38 · 136 阅读 · 0 评论 -
垃圾回收算法与Hotspot算法实现以及垃圾回收器
垃圾回收算法1. 标记 - 清除在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。在清除阶段,会进行对象回收并取消标志位,另外,还会判断回收后的分块与前一个空闲分块是否连续,若连续,会合并这两个分块。回收对象就是把对象作为分块,连接到被称为 “空闲链表” 的单向链表,之后进行分配时只需要遍历这个空闲链表,就可以找到分块。在分配时...原创 2019-07-23 15:32:50 · 195 阅读 · 0 评论