File tree Expand file tree Collapse file tree 2 files changed +7
-4
lines changed
Expand file tree Collapse file tree 2 files changed +7
-4
lines changed Original file line number Diff line number Diff line change @@ -60,9 +60,7 @@ ClassFile {
6060 u4 magic; // Class 文件的标志
6161```
6262
63- 每个 Class 文件的头 4 个字节称为魔数(Magic Number),它的唯一作用是** 确定这个文件是否为一个能被虚拟机接收的 Class 文件** 。
64-
65- 程序设计者很多时候都喜欢用一些特殊的数字表示固定的文件类型或者其它特殊的含义。
63+ 每个 Class 文件的头 4 个字节称为魔数(Magic Number),它的唯一作用是** 确定这个文件是否为一个能被虚拟机接收的 Class 文件** 。Java规范规定魔数为固定值:0xCAFEBABE。如果读取的文件不是以这个魔数开头,Java虚拟机将拒绝加载它。
6664
6765### Class 文件版本号(Minor&Major Version)
6866
Original file line number Diff line number Diff line change @@ -107,7 +107,10 @@ public class GCTest {
107107
108108大对象就是需要大量连续内存空间的对象(比如:字符串、数组)。
109109
110- 大对象直接进入老年代主要是为了避免为大对象分配内存时由于分配担保机制带来的复制而降低效率。
110+ 大对象直接进入老年代的行为是由虚拟机动态决定的,它与具体使用的垃圾回收器和相关参数有关。大对象直接进入老年代是一种优化策略,旨在避免将大对象放入新生代,从而减少新生代的垃圾回收频率和成本。
111+
112+ * G1垃圾回收器会根据-XX: G1HeapRegionSize 参数设置的堆区域大小和-XX: G1MixedGCLiveThresholdPercent 参数设置的阈值,来决定哪些对象会直接进入老年代。
113+ * Parallel Scavenge垃圾回收器中,默认情况下,并没有一个固定的阈值(XX: ThresholdTolerance 是动态调整的)来决定何时直接在老年代分配大对象。而是由虚拟机根据当前的堆内存情况和历史数据动态决定。
111114
112115### 长期存活的对象将进入老年代
113116
@@ -229,6 +232,8 @@ public class ReferenceCountingGc {
229232- 方法区中类静态属性引用的对象
230233- 方法区中常量引用的对象
231234- 所有被同步锁持有的对象
235+ - JNI(Java Native Interface)引用的对象
236+
232237
233238** 对象可以被回收,就代表一定会被回收吗?**
234239
You can’t perform that action at this time.
0 commit comments