jvm
文章平均质量分 93
llllllxj
业精于勤,荒于嬉;行成于思,毁于随
展开
-
G1 垃圾回收器
G1 物理上不分代,默认会将整个内存区域分为2048个region,region的大小为1MB-32MB,且为2的N次幂。适合内存大的jvm。region可分为四种类型,且region并不是固定的,运行时会改变Eden Space 新生代Survivor Space 存活区Old Generation 老年代humongous 存储大对象,如果超过0.5个region,就放入humongous,但是如果它是。为了解决这个问题,G1划分了一个Humongous区, 它用来专门存放大对象。。原创 2022-11-21 19:06:10 · 1906 阅读 · 0 评论 -
java垃圾回收
java垃圾回收 参考:https://blog.csdn.net/yrwan95/article/details/82829186 Java程序在运行过程中会产生大量的对象,但是内存大小是有限的,如果光用而不释放,那内存迟早被耗尽。如C、C++程序,需要程序猿手动释放内存,Java则不需要,是由垃圾回收器去自动回收。 垃圾回收器回收内存至少需要做两件事情:标记垃圾、回收垃圾。垃圾判断算法 即判断JVM中的所有对象,哪些对象是存活的,哪些对象可回收的算法引用计数算法最简单的垃圾判断算法原创 2020-09-07 09:49:18 · 230 阅读 · 0 评论 -
OOP模型、计算java对象大小
OOP模型oop是java对象在jvm中的存在形式。一个oop对象分为 对象头区域,实例数据区域,对其填充这三部分。对象头对象头区域分为三部分,Mark Word,类型指针,数组长度。Mark Word:标记字。主要用来表示对象的线程锁状态,存放对象hashCode、GC次数 32bit占用:4B 64bit占用:8B类型指针(Klass pointer):指向Class信息的指针,表示该对象是哪个Class的实例 开启指针压缩:4B 关闭指针压缩:8B数组长度原创 2020-08-29 17:09:53 · 416 阅读 · 0 评论 -
逃逸分析
通过逃逸分析来决定某些实例或者变量是否要在堆中进行分配,如果开启了逃逸分析,即可将这些变量直接在栈上进行分配,而非堆上进行分配。这些变量的指针可以被全局所引用,或者其其它线程所引用。JDK1.6之后默认是开启的逃逸的方式方法逃逸:在一个方法体内,定义一个局部变量,而它可能被外部方法引用,比如作为调用参数传递给方法,或作为对象直接返回。或者,可以理解成对象跳出了方法。线程逃逸:这个对象被其他线程访问到,比如赋值给了实例变量,并被其他线程访问到了。对象逃出了当前线程。逃逸分析的好处如果一个对象不会在原创 2020-08-29 16:56:44 · 137 阅读 · 0 评论 -
jvm内存模型
jvm内存模型参考 https://www.cnblogs.com/newAndHui/p/11168791.htmlJVM内存模型其实就是JVM在启动的时候从操作系统内存中要了一块大内存,然后将这个大内存分成五个区域:方法区、堆区、虚拟机栈、本地方法栈、程序计数器。 其中方法区、堆区是线程共享的 虚拟机栈、本地方法栈、程序计数器是线程私有的程序计数器维护的只是下一条待执行命令的地址,所以不会OOM虚拟机栈 虚拟机栈描述的方法执行的内存模型。在每个方法执行的同时会创建一个栈帧,用原创 2020-08-29 16:41:14 · 593 阅读 · 0 评论 -
JVM类加载
JVM类加载 本文基于OpenJDK8,OpenJDK默认使用的是HotSpot虚拟机(JVM),而HotSpot是基于c++实现的Klass模型 一个java的class在jvm中是怎么存储的?用的就是Klass模型。 java中的对象都是由jvm进行管理的,而HotSpot是基于c++实现的,c++本身也是一个面向对象编程语言,所以每一个class都有一个Klass模型(是一个c++的类,和spring中的beanDefinition类似)来存放类的元数据信息:属性信息,常量池,方法信息原创 2020-08-29 15:49:34 · 172 阅读 · 0 评论 -
.class字节码解析
.class字节码解析参考: https://www.jianshu.com/p/e5062d62a3d1一个.class文件有这么些部分组成u4 表示4个字节,一个字节是两个16进制。!表示不确定大致分为7个部分:1.魔数和class文件版本(次版本号,主版本号)2.常量池3.访问标志4.类索引,父类索引,接口索引5.字段表集合6.方法表集合7.属性表集合随机找了个.class文件为例:cafe babe 0000 0034 003a 0a00 0d00 2009000c 0原创 2020-08-29 16:22:36 · 915 阅读 · 0 评论