- 博客(7)
- 收藏
- 关注
原创 JVM学习之.class文件结构
1.class类文件的结构 Class文件是一组以8字节为基础单位的二进制流,中间没有空隙。 Class文件格式采用一种类似于C语言结构体的伪结构来存储,这种伪结构中只有两种数据类型:无符号数和表,后面的解析都是以这两种数据类型为基础。 无符号数属于基本的数据类型,以u1,u2,u4,u8来分别代表1个字节、2个字节、4个字节和8个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值,或者按UTF-8编码构成字符串值。 表是由多个...
2021-11-14 20:24:18
548
原创 JVM学习之垃圾收集器
垃圾回收器 垃圾算法是内存回收的方法论,则垃圾回收期就是内存回收的具体表现。 Hotspot JVM1.6的垃圾收集器如图所示,如果两个收集器见存在连线,就说明他们可以搭配使用。没有最好的收集器,只有最合适的收集器。1.Serial收集器Serial收集器是最基本,历史最悠久的收集器,是JDK1.3之前虚拟机新生代收集的唯一选择。单线程收集器,不仅仅只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是他在进行垃圾收集时,必须暂...
2021-11-09 17:17:07
465
原创 JVM学习笔记之内存分配与回收
对象的内存分配,往大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并简介地在栈上分配),独享主要分配之新生代的Eden区上,如果启动了本地线程分配缓存,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设置。1.对象优先分配在Eden区 大多数情况下,对象在新生代Eden中分配。当Eden区没有足够的空间进行分配时,虚拟机将发起...
2021-11-05 16:49:11
166
原创 JVM第三章学习笔记垃圾收集器与内存分配策略
一.垃圾收集(Garbage Collection,GC) 主要针对Java堆和方法区,这部分内存的分配和回收都是动态的。二.怎么判断哪些内存需要回收? 1.引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用他时,计数器值就加1;当引用失效时,计数器值就减一;任何时刻计数器都为0的对象就是不再被使用的。 Java中并没有选用引用计数算法,主要是他很难解决相互引用的问题。 2.根搜索算法(GC Roots Tracing)...
2021-11-04 14:05:43
162
原创 JVM学习笔记第二章OOM
1.JAVA堆溢出 Java用于存储对象实例,不断创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,就会在对象数量到达最大堆的容量限制后产生内存溢出异常。 内存泄漏(Memory Leak):一部分内存空间已经使用了,却没有引用指向这部分空间。造成这片已经使用的空间无法处理。2.虚拟机栈和本地方法栈溢出 如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。 ...
2021-11-03 14:11:19
333
原创 JVM学习第二章笔记 JAVA内存区域
一.java运行时数据区域JAVA虚拟机运行时数据区 1.程序计数器(Program Counter Register)时一块较小的内存空间,他的作用可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的而概念模型里,字节码解释器工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要这个计数器来完成。 java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定...
2021-11-03 08:20:14
160
原创 jvm虚拟机第一章学习笔记
最近对JVM感兴趣了,在看书,写写随手笔记。一.java的优点 java是一门结构严谨,面向对象的编程语言。 (1)摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想。 (2)提供了一种相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题。 (3)实现了热点代码检测和运行时编译及优化,使得Java应用能随着运行时间的增加反而获取了更高的性能。 (4)有完善的应用程序接口,还有很多的第三方类库来...
2021-11-01 21:07:31
114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅