结构体相关题目
结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍,如果不是就自动在成员之间填充
vector是利用数组存放元素,当前面有元素被删除的时候后面的元素都向前移动一格,所以会进行内存的移动。
map、set底层实现都是rb_tree
JVM
体系结构
运行时数据区
JVM内存模型
**JVM运行时内存 = 共享内存区 + 线程内存区
**
**
共享内存区 = 持久带 + 堆
持久带 = 方法区 + 其他
堆 = Old Space + Young Space
Young Space = Eden + S0 + S1**
- JVM用持久带(Permanent Space)实现方法区,主要存放所有已加载的类信息,方法信息,常量池等等。
- 堆(heap),主要用来存放类的对象实例信息(包括new操作实例化的对象和定义的数组)。
- Old Space主要存放应用程序中生命周期长的存活对象;
- Eden(伊甸园)主要存放新生的对象;
- S0和S1是两个大小相同的内存区域,主要存放每次垃圾回收后Eden存活的对象,作为对象从Eden过渡到Old Space的缓冲地带(S是指英文单词Survivor Space)。
线程内存区
线程内存区=单个线程内存+单个线程内存+···
单个线程内存=PC Regster+JVM栈+本地方法栈
JVM栈=栈帧+栈帧+…
栈帧=局域变量区+操作数区+帧数据区