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