回顾:《深入理解Java虚拟机》前半部分

该篇回顾的前半部分为“走近java”和“自动内存管理机制”部分,具体章节包括1~5章节。

1. 原理

Java虚拟机的运行时区域(详细链接

运行时区域主要分为两块:线程独占区、线程共享区。

线程独占区包括:虚拟机栈、程序计数器、本地方法栈。

虚拟机栈中有栈针和局部变量表;

程序计数器是Java虚拟机规范中唯一没有被定义OutOfMemoryError的区域;

本地方法栈是对于本地方法的栈的结构。

线程共享区包括:堆、方法区。

堆的其唯一目的是存放对象的实例;

方法区是存储运行时常量池、已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据;

 

对象的回收(垃圾回收器

垃圾回收器有:Serial、ParNew、Parallel Scavenge、Concurrent Mark Sweep (CMS)、G1。

Serial是一个单线程的,结构简单,但是执行效率还算比较高的;

ParNew是多线程的,可以与cms进行结合;

Parallel是用在服务端一个默认的垃圾收集器,主要针对于吞吐量;

Cms是一个并行的垃圾收集器;

G1是目前最高端的垃圾收集器。

 

垃圾对象的标记算法有两个:引用计数法、可达性分析法。(标记算法与垃圾收集算法

垃圾收集算法:标记-清除算法、复制算法、标记-整理算法、分代收集算法。

标记-清除算法由于标记和清除的速度比较慢,一般不会倾向使用它;

复制算法比较适用于新生代内存;

标记-整理算法比较适用于老年代内存;

分代收集算法实施结合了以上,根据不同的年龄代去选择了不同的收集算法。

 

对象内存分配原则(内存分配对象

1. 对象首先在Eden区域分配;

2. 大对象直接进入到老年代;

3. 长期存活的对象进入到老年代;

4. 空间的分配担保;

5. 逃逸分析与栈上分配。

 

2. 工具

命令行工具(命令行工具):jps、jstat、jinfo、jmap、jstack。

图形化工具(JConsoleMAT):JConsole、MAT。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值