怎么做网站流量赚钱吗温州网站建设价格
一、运行时数据区域
程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存
二、HotSpot虚拟机对象
- 对象创建: 
- 引用检查
 - 类加载检查
 - 分配内存空间:指针碰撞、空闲列表
 - 分配空间初始化
 - 对象信息设置(对象头内)
 
 - 对象内存布局: 
- 对象头
 - 实例数据
 - 对象填充
 
 - 对象访问定位: 
- 句柄访问
 - 直接指针访问
 
 - OutOfMemoryError(OOM) 
- 程序计数器不存在此问题
 - Java堆溢出: 
- 内存泄漏
 - 内存溢出
 
 - 虚拟机栈本地方法栈(HotSpot不区分)溢出 
- StackOverFlowError:线程请求栈深度 > 虚拟机允许最大深度
 - OutOfMemoryError:虚拟机栈内存允许动态拓展
 - 可以通过减小最大堆和减小栈容量换取更多的线程
 
 - 方法区和运行时常量区溢出
 - 本机直接内存溢出:HeapDump无明显异常,可能原因:NIO间接使用DirectMemory
 
 - 垃圾收集器与内存分配策略:对象回收 
- 引用计数算法
 - 可达性分析算法
 - 引用: 
- 强引用:Object object = new Object()存在引用赋值,永远不会回收被引用对象
 - 软引用:还有引用但是非必须的对象,发生内存溢出异常前被二次回收,回收还不够才会报内存溢出异常
 - 弱引用:非必须对象,生存到下一次垃圾回收为止
 - 虚引用
 
 
 
