JVM
dadadadak
这个作者很懒,什么都没留下…
展开
-
《深入理解Java虚拟机》——阅读笔记(一)——20201102~1104
走进java1.1 概述java优点:拜托了硬件平台的束缚,实现了“一次编写,到处运行”的理想提供了一种相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题实现了热点代码检测和运行时编译及优化,使得java应用能随着运行时间的增加而获得更高的性能有一套完善的应用程序接口,还有无数的来自商业机构和开源社区的第三方类库来帮助实现各种各样的功能……1.2 java技术体系传统意义上,Sun官方所定义的Java技术体系包含了:Java程序设计语言各种硬件平台上的Java虚原创 2020-11-04 19:12:51 · 241 阅读 · 1 评论 -
20200519---直接内存
直接内存目录直接内存直接内存概述直接内存概述不是虚拟机运行时数据区的一部分,也不是《java虚拟机规范》中定义的内存区域。是在java堆外,直接向系统申请的内存空间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存通常,访问直接内存的速度会优于java堆,即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存Java的NIO库允许java程序使用直接内存,用于数据缓冲区。IONIO(New IO / Non-Blocking原创 2020-05-19 16:55:32 · 131 阅读 · 0 评论 -
随记---20200519---对象的实例化内存布局与访问定位
对象的实例化内存布局与访问定位目录对象的实例化内存布局与访问定位相关面试题:1. 对象的实例化创建对象的方式创建对象的步骤2. 对象的内存布局对象头(Header)实例数据(Instance Data)对齐填充小结3. 对象的访问定位相关面试题:对象在JVM中是怎么存储的?对象头信息里有哪些内容?1. 对象的实例化创建对象的方式new最常见的方式变形1:Xxx的静态方法变形2:XxxBuilder/XxxFactory的静态方法Class的newInstance():反射的原创 2020-05-19 15:46:33 · 196 阅读 · 0 评论 -
随记--方法区--20200518
方法区目录方法区1. 栈、堆、方法区的交互关系2. 方法区的理解Hotspot中的方法区的演进3. 设置方法区的大小与OOM如何解决这些OOM?4. 方法区的内部结构方法区存储什么?类型信息域(Field)信息方法信息代码举例常量池运行时常量池5. 方法区使用举例6. 方法区的演进细节永久代为什么要被元空间替代?StringTable为什么要调整?静态变量放在哪里?7. 方法区的垃圾收集1. 栈、堆、方法区的交互关系内存区域线程共享线程私有堆元空间本地方法栈虚拟机栈程序计数器StackOverflow原创 2020-05-19 02:00:18 · 119 阅读 · 0 评论 -
随记----逃逸分析:代码优化---20200518
使用逃逸分析,编译器可对代码做如下优化:栈上分配:将堆分配转化为栈分配,如果一个对象在子程序中被分配,要使指向该对象的指针永远不会逃逸,对象可能是栈分配的候选,而不是堆分配。同步省略。如果一个对象被发现只能从一个线程被访问到,那么对于这个对象的操作可以不考虑同步。分配对象或标量替换:有的对象可能不需要作为一个连续的内存结构存在也可以被访问到,那么对象的部分或全部可以不存储在内存,而是存储在CPU寄存器中。目录栈上分配同步省略分配对象或标量替换栈上分配-XX:-DoEscapeAnalysis原创 2020-05-18 16:38:58 · 171 阅读 · 0 评论 -
随笔---20200516~20200517---堆
堆目录堆1. 堆的核心概述内存细分2. 设置堆内存大小与OOM3. 年轻代与老年代4. 图解对象分配过程5. Minor GC,Major GC,Full GCMinor GC触发机制:老年GC(Major GC/Full GC)触发机制:Full GC触发机制:6. 堆空间分代思想7. 内存分配策略(或对象提升(promotion)规则)8. 为对象分配内存:TLAB9. 小结堆空间的参数设置10. 堆是分配对象的唯一选择吗?1. 堆的核心概述1个进程对应1个JVM实例1个进程有多个线程、多个原创 2020-05-18 01:40:12 · 138 阅读 · 0 评论 -
随记---20200515
栈帧:局部变量表、操作数栈、帧数据区(方法返回地址、动态链接、一些附加信息)方法返回地址存放该方法的PC寄存器的值一个方法的结束,有两种方式:正常执行完成出现未处理的异常,非正常退出在方法推出后都返回到该方法被调用的位置。正常退出时,调用者的pc计数器的值作为返回地址,即调用该方法的指令的下一条指令的地址。而通过异常退出的,返回地址要通过异常表来确定,栈帧中一般不会保存这部分信息。方法返回的字节码指令ireturn (当返回值是Boolean、byte、char、short和int类型原创 2020-05-16 11:13:02 · 127 阅读 · 0 评论 -
随记---方法的调用--- 20200514-20200515
8.方法的调用目录8.方法的调用静态链接与动态链接静态链接:动态链接:虚拟机中方法调用指令动态语言与静态语言方法重写的本质静态链接与动态链接静态链接:当一个字节码文件被装载进JVM内部时,如果被调用的目标方法在编译期可知,且运行期内保持不变时。这种情况下将调用方法的符号引用转换为直接引用的过程成为静态链接。动态链接:如果被调用的方法在编译期无法被确定下来,也就是说,只能够在程序运行期将调用方法的符号引用转换为直接引用,由于这种引用转换过程具备动态性,也就称为动态链接对应的方法绑定机制为:早期绑原创 2020-05-15 23:33:52 · 101 阅读 · 0 评论 -
随笔200513
局部变量表double和long占据两个slotthis在构造方法和 实例方法的局部变量表占据index = 0的slot.大括号里的变量使用完就可以销毁,让出slot位置变量,按照在类中声明的位置分成员变量:在使用前都经历过默认初始化赋值类变量:linking的prepare阶段:给类变量默认赋值 —> initial阶段:给类变量显式赋值即静态代码块赋值实例变量:随着对象的创建,会在堆空间中分配实例变量空间,并进行默认赋值局部变量:在使用前必须进行显式赋值, 否则编译原创 2020-05-14 21:05:10 · 73 阅读 · 0 评论 -
StringTable---20200525
《尚硅谷JVM系列》P118-P133StringTable目录1. String的基本特性2. String的内存分配3. String的基本操作4. 字符串拼接操作5. intern()的使用源码面试题intern()效率6. StringTable的垃圾回收7. G1中的String去重操作1. String的基本特性字符串,用""来表示String s1 = “abc”;String s1 = new String(“abc”);声明为final,不可被继承;实现了Seriali原创 2020-05-25 20:23:40 · 142 阅读 · 0 评论 -
执行引擎--20200525
执行引擎执行引擎概述Java代码编译和执行过程机器码、指令、汇编语言解释器JIT编译器原创 2020-05-25 01:04:51 · 126 阅读 · 0 评论 -
垃圾回收(三)---20200531-20200602---垃圾回收器
《尚硅谷JVM系列》(上篇)P134-P203垃圾回收:垃圾回收概述 P134-P137垃圾回收相关算法(标记算法、清除算法)P138-P153垃圾回收相关概念P154-P168垃圾回收器P169-P202垃圾回收垃圾回收器1. GC分类与性能指标垃圾回收器概述垃圾回收器评价GC的性能指标评价GC的性能指标:吞吐量(throughput)评价GC的性能指标:暂停时间(pause time)评价GC的性能指标:吞吐量vs暂停时间2. 不同的垃圾回收器概述垃圾收集器发展史(略)7款经典的垃圾收集器7原创 2020-06-02 00:14:37 · 229 阅读 · 0 评论 -
垃圾回收(二)---20200528-20200531---垃圾回收相关概念
《尚硅谷JVM系列》P134-P垃圾回收:垃圾回收概述 P134-P137垃圾回收相关算法(标记算法、清除算法)P138-P153垃圾回收相关概念P154-P垃圾回收器P垃圾回收垃圾回收相关概念1. System.gc()的理解2. 内存溢出与内存泄漏内存溢出(OOM)内存泄漏 ( Memory Leak )3. Stop The World4. 垃圾回收的并行与并发5. 安全点与安全区域6. 再谈引用强引用软引用弱引用虚引用终结器引用垃圾回收器垃圾回收相关概念1. System.gc()的原创 2020-06-01 17:38:52 · 164 阅读 · 0 评论 -
垃圾回收(一)---20200526-20200528
《尚硅谷JVM系列》P134-P垃圾回收:垃圾回收概述 P134-P137垃圾回收相关算法(标记算法、清除算法)P138-P垃圾回收相关概念垃圾回收器垃圾回收垃圾回收概述1. 什么是垃圾2. 为什么需要GC3. 早期垃圾回收4. Java垃圾回收机制垃圾回收相关算法1. 标记阶段:引用计数算法2. 标记阶段:可达性分析算法GC Roots3. 对象的finalization机制4. MAT与JProfiler的GC Roots溯源5. 清除阶段:标记-清除算法6. 清除阶段:复制算法7. 清除阶原创 2020-05-28 22:28:01 · 145 阅读 · 0 评论