摘要:
541651635165165 阅读全文
摘要:
Java 平台调试体系(Java Platform Debugger Architecture,JPDA),由三个相对独立的层次共同组成。这三个层次由低到高分别是 Java 虚拟机工具接口(JVMTI)、Java 调试连接协议(JDWP)以及 Java 调试接口(JDI)。 模块层次编程语言作用 J 阅读全文
摘要:
工具概述 使用前面的命令行能够获取目标Java应用性能相关的基础信息,但它们存在下列局限: 无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等(这对定位应用性能瓶颈至关重要)。 要求用户登录到目标Java应用所在的宿主机上,使用起来不是很方便。 分析数据通过终端输出,结果展 阅读全文
摘要:
我们可以在启动 Java 命令时指定不同的 JVM 参数,让 JVM 调整自己的运行状态和行为,内存管理和垃圾回收的 GC 算法,添加和处理调试和诊断信息等等。 JVM参数选项 类型一:标准参数选项 特点:比较稳定,后续版本基本不会变化,所有的 JVM 都要实现这些参数,并且向后兼容。以-开头。 各 阅读全文
摘要:
Java 平台提供了全面的 JVM 监控和管理措施。 在 Java SE 5 之前,虽然 JVM 提供了一些底层的 API,比如 JVMPI 和 JVMTI,但这些 API 都是面向 C 语言的,需要通过 JNI 等方式才能调用,想要监控 JVM 和系统资源非常不方便。 Java SE 5.0 版本 阅读全文
摘要:
性能指标 停顿时间(响应时间) 提交请求和返回响应之间使用的时间,一般比较关注平均响应时间 常用操作的响应时间列表: 操作 响应时间 打开一个站点 几秒 数据库查询一条记录(有索引) 十几毫秒 机械磁盘一次寻址定位 4毫秒 从机械磁盘顺序读取1M数据 2毫秒 从SSD磁盘顺序读取1M数据 0.3毫秒 阅读全文
摘要:
概述 Java字节码对于虚拟机,就好像汇编语言对于计算机,属于基本执行指令。 Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的 阅读全文
摘要:
案例说明 首先看一个demo public class SonTest { public static void main(String[] args) { Father f = new Father(); //Father f = new Son(); System.out.println(f.x 阅读全文
摘要:
G1回收器:区域化分代式 G1前置知识 Card Table(卡表,多种垃圾回收器均具备) 由于在进行YoungGC时,我们在进行对一个对象是否被引用的过程,需要扫描整个Old区,所以JVM设计了CardTable,将Old区分为一个一个Card,一个Card有多个对象;如果一个Card中的对象有引 阅读全文
摘要:
对象分配过程概述 为新对象分配内存是件复杂的事,不仅需要考虑内存如何分配、在哪里分配,并且由于内存分配算法和内存回收算法密切相关,还需要考虑GC执行完内存回收后是否会在内存空间中产生内存碎片。 一般情况 新创建的对象放在Eden区,该区域内存大小有限制。随着新对象的不断创建,该区域的内存会被填满。这 阅读全文