一、内存模型数据分配
内存模型名称 | 存放数据 |
---|---|
栈 | 句柄、对象引用 |
堆 | 对象初始化内存信息 |
方法区 | 类信息、常量、静态变量 |
本地方法栈 | java底层本身就是对当前系统的调用、对系统的调用接口,存放 |
计数器 | 代码执行到第几行了(多线程上下文切换标识) |
二、 内存中堆的优化算法
面对大量内存的使用、清理
目前jdk主要采用两种方式:
1、jdk内存数据分区
可以宏观的分为 刚使用的内存(新生代)、使用过很久的内存(老年代)、永久代(也叫元空间、系统自带的)
2、回收机制
算法名称 | 操作 |
---|---|
标记算法 | 把某些数据做好标记 |
复制算法 | 主要是考虑到做清理的时候,按照一个个去清理当前使用的内存空间太慢了,可以直接把整个内存拷贝到另一块地方,直接清空当前的内存空间 |
标记整理算法 | 挨个清理很慢、在标记的时候,可以将数据进行归纳,到时候清理也可以批量清理,加快了清理的速度 |
分代收集算法 | 按照内存使用的时间远近进行清理内存数据 |