Skip to content

Commit fda1458

Browse files
committed
添加jvm内容
1 parent 7a1675e commit fda1458

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

_drafts/jvm.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
- 对象头(Header)*todo:添加图示*
4141
- 对象自身的运行时数据,HashCode、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等, Mark Word
4242
- 类型指针,即类元数据指针。**注意:**并不是所有虚拟机实现都必须在对象数据上保留类型指针
43-
- 如果对象是一个Java数组,那在对象投中还必须有一块用于记录数组长度的数据
43+
- 如果对象是一个Java数组,那在对象头中还必须有一块用于记录数组长度的数据
4444
- 实例数据(Instance Data)
4545
- 字段内容,无论是父类继承还是子类中定义,都需要记录下来
4646
顺序受虚机分配策略参数(FieldsAllocationStyle)和字段在Java远吗中定义顺序的影响
@@ -55,3 +55,15 @@
5555
- 优势是速度快,节省了一次指针定位的时间开销,HotSpot采用此种方式
5656
5. 实战:OutOfMemoryError
5757
- Java堆溢出
58+
- 不断创建对象,并添加到列表中
59+
- 虚拟机栈和本地方法栈移出
60+
- HotSpot不区分虚拟机栈和本地方法栈
61+
- 调小栈空间,递归
62+
- 不断创建线程(64位系统下很难)
63+
- 方法区和运行时常量池溢出
64+
- JDK 1.6可以设置-XX:PermSize和-XX:MaxPermSize,不断创建字符串并intern(),并添加到列表中
65+
- JDK 1.7可以利用字节码技术不断创建增强类
66+
- 本机直接内存溢出
67+
- NIO使存储在Java堆中的DirectByteBuffer对象可以直接操作堆外内存
68+
- 通过Unsafe类不断分配堆外内存
69+
- DirectMemory导致的内存溢出,一个明显特征是在Heap Dump文件中不会看见明显的异常,如果OOM后Dump文件很小,且程序中直接或间接使用了NIO,则可能为此原因

_drafts/questions.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33
1. uuid是否有重复?
44
- 自动id生成策略
55
- 分布式id生成原理
6+
2. 线程池
7+
3. 前10个ip,内存不足

0 commit comments

Comments
 (0)