02.26 2020 最全JVM性能调优:垃圾回收+线程+类加载+子系统...(干货)

JVM调优

  1. 概念
  2. 基本垃圾回收算法
  3. 垃圾回收面临的问题
  4. 分代垃圾回收详述1
  5. 分代垃圾回收详述2
  6. 典型配置举例1
  7. 典型配置举例2
  8. 新一代的垃圾回收算法
  9. 调优方法
  10. 反思

什么是JVM?

在互联网行业,JVM毫无疑问已经是最热门的技术之一

JVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Java语言的一个非常重要的特点就是平台无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

JVM有哪些特性?

1、移植性

无论是GC还是Hotspot都可以用在任何Java可用的地方。比方说,JRuby可以运行在其他平台上,Rails应用就可以运行在IBM主机上的JRuby上,而且这台IBM主机运行的是CP/CMS.实际上,由于Java和OpenJDK项目的开源,我们正在看到越来越多的平台的衍生,因此JVM的移植性也将越来越棒。

2、成熟

JVM已有多年的历史,在过去的这些年里,许多开发者为它做出了许多贡献,使得它的性能一次又一次地提升,让JVM变得更加稳定、快速和广泛。

3、覆盖面

JRuby和JVM上的其他语言项目已经被承认,一个例子是invokedynamic specification(akaJSR292)。JSR越来越配合新的语言,JVM已不再是Java一个人定制规则。JVM正在构建成为类如JRuby等项目的优良平台。还有一个MLVM(multiple languageVM)项目,好比是新特性的清算机构,是一个许多企业应用的开发者试图添加应用的地方,而这些应用正是他们想在JVM中看到的。而且JVM开发者互相协作、彼此影响,无疑这有利于JVM新特性的诞生。这些细节都可以看到JVM正在关注开发者的需求,扩大他的覆盖面。

关注后留意私信回复【架构书籍】即可免费领取史上最全JVM实战文档

JVM内存区域划分

1.程序计数器(线程私有)

2Java栈(线程私有)

3.本地方法栈(线程私有)

4.堆(线程共享)

5.方法区(线程共享)

6.直接内存(线程共享)


JVM执行子系统

1.Class类文件结构

  • 1.1 Java跨平台的基础
  • 1.2 Class类的本质

2.字节码指令

  • 2.1加载和存储指令
  • 2.2运算或算术指令
  • 2.3类型转换指令
  • 2.4创建类实例的指令:
  • 2.5创建数组的指令:
  • 2.6访问字段指令:
  • 2.7数组存取相关指令
  • 2.8检查类实例类型的指令:
  • 2.9操作数据管理指令
  • 2.10控制转移指令
  • 2.11方法调用指令
  • 2.12方法返回指令
  • 2.13异常处理指令
  • 2.14同步指令

3.类加载机制

4.类加载器

  • 4.1系统的类加载器
  • 4.2双亲委派模型

5.Tomcat类加载机制

6.方法调用详解

  • 6.1解析
  • 6.2静态分派
  • 6.3动态分派
  • 6.4基于栈的字节码解释执行引擎


垃圾回收器和内存分配策略

1.Java中是值传递还是引用传递?

2.引用类型

3.基本垃圾回收算法

  • 3.1按照基本回收策略分
  • 3.2按分区对待的方式分
  • 3.3按系统线程分

4.分代处理垃圾

5.JAVA中垃圾回收GC的类型


编写高效优雅Java程序

1、面向对象

  • 1.1构造器参数太多怎么办?
  • 1.2不需要实例化的类应该构造器私有
  • 1.3不要创建不必要的对象
  • 1.4避免使用终结方法
  • 1.5使类和成员的可访问性最小化
  • 1.6使可变性最小化
  • 1.7复合优先于继承
  • 1.8接口优于抽象类

2.方法

  • 2.1可变参数要谨慎使用
  • 2.2返回零长度的数组或集合,不要返回null
  • 2.3优先使用标准的异常

3.通用程序设计


关注后私信回复【架构书籍】即可免费领取史上最全JVM实战文档

性能优化

1、常用的性能评价测试指标

1.1响应时间

1.2并发数

1.3吞吐量

2、常用的性能优化手段

2.1避免过早优化

2.2进行系统性能测试

2.3寻找系统瓶颈,分而治之,逐步优化

2.4前端优化常用手段

  • 2.4.1浏览器/App
  • 2.4.2 CDN加速
  • 2.4.3反向代理缓存
  • 2.4.4 WEB组件分离

3、应用服务性能优化

3.1缓存

  • 3.1.1缓存的基本原理和本质
  • 3.1.2合理使用缓冲的准则
  • 3.1.3分布式缓存与一致性哈希

3.2异步

  • 3.2.1同步和异步,阻塞和非阻塞
  • 3.2.2常见异步的手段

3.3集群

3.4应用相关

  • 3.4.1代码级别
  • 3.4.2并发编程
  • 3.4.3资源的复用
  • 3.4.4 JVM
  • 3.4.5 GC调优
  • 3.4.6调优实战
  • 3.4.7存储性能优化

关注后私信回复【架构书籍】即可免费领取史上最全JVM实战文档

第一部分


2020 最全JVM性能调优:垃圾回收+线程+类加载+子系统...(干货)

第二部分


2020 最全JVM性能调优:垃圾回收+线程+类加载+子系统...(干货)

第三部分


2020 最全JVM性能调优:垃圾回收+线程+类加载+子系统...(干货)

第四部分


2020 最全JVM性能调优:垃圾回收+线程+类加载+子系统...(干货)

第五部分


2020 最全JVM性能调优:垃圾回收+线程+类加载+子系统...(干货)

​ 总目录


2020 最全JVM性能调优:垃圾回收+线程+类加载+子系统...(干货)

​关注后私信回复【架构书籍】即可免费领取史上最全JVM实战文档


分享到:


相關文章: