Stack.peek()和Stack.pop() Stack.peek() peek()函数返回栈顶的元素,但不弹出该栈顶元素。 Stack.pop() pop()函数返回栈顶的元素,并且将该栈顶元素出栈。 2020-09-27 java 垃圾回收相关算法 垃圾回收相关算法 垃圾标记阶段的算法之引用计数算法 小结 垃圾标记阶段的算法之可达性分析算法 对象的finalization机制 垃圾清除阶段算法之标记–清除算法 垃圾清除阶段算法之复制算法 垃圾清除阶段算法之标记-压缩(整理)算 2020-09-25 JVM底层原理 垃圾回收概述 垃圾回收概述 什么是垃圾 为什么要GC Java的垃圾回收机制 什么是垃圾垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。 为什么要GC 对于高级语言来说,如果不进行垃圾回收,内存迟早都会被消耗完因为不断地分 2020-09-25 JVM底层原理 StringTable StringTable String的基本特性 String的内存分配 String基本操作 字符串拼接操作 intern()的使用 intern()的空间效率测试 String Table的垃圾回收 G1中的 String去重操作 2020-09-24 JVM底层原理 执行引擎 执行引擎 概述 Java代码编译和执行的过程 解释器与JIT(just in time)编译器 为什么说JAVA是半编译半解释型语言? 机器码、指令、汇编语言 字节码 解释器 JIT编译器 有了JIT为什么还要保留解 2020-09-23 JVM底层原理 直接内存 直接内存 直接内存是在JAVA堆外,直接向系统申请的内存区间。 来源于NIO,通过存在堆中的 DirectByteBuffer操作 Native内存 通常,访问直接内存的速度会优于Java堆。即读写性能高。因此出于性能考虑,读写频 2020-09-21 JVM底层原理 对象的实例化、内存布局与访问定位 对象的实例化、内存布局与访问定位 对象的实例化 对于上图中“创建对象的步骤”详细的解释 对象的内存布局 对象的访问定位 JVM是如何通过栈帧中的对象引用访问到其内部的对象实例的 对象的实例化 对于上图中“创建对象的步骤”详 2020-09-21 JVM底层原理 方法区(下) 方法区(下) 方法区使用举例 方法区的演进细节 永久代为什么要被元空间取代 String Table为什么要调整 方法区的垃圾收集 总结 方法区使用举例public class MethodAreaDemo { publ 2020-09-20 JVM底层原理 方法区的例子 2020-09-20 被引用 方法区(上) 方法区(上) 栈、堆、方法区的交互关系 方法区的理解 元空间和永久代的区别 设置方法区大小与OOM 设置方法区大小 如何解决OOM 方法区的内部结构 存储的东西 常量池和运行时常量池 为什么需要常量池? 运行时常量池 2020-09-20 JVM底层原理 堆是分配对象存储的唯一选择吗? 🍟 逃逸分析 举例 参数设置 逃逸分析之代码优化 栈上分配 同步省略 分离对象/标量替换 逃逸分析小结 在Java虚拟机中,对象是在Java堆中分配内存的,这是一个普遍的常识。但是,有种特殊情况,那就是如果经过 逃逸分析 2020-09-19 JVM底层原理 堆(下) 堆(下) Minor GC、Major GC与Full GC 最简单的分代式GC策略的触发条件 堆空间分代思想 内存分配策略 为对象分配内存:TLAB TLAB再说明 TLAB分配过程 小结堆空间的参数设置 Minor G 2020-09-18 JVM底层原理