网站首页 > 技术文章 正文
前言
Java 虚拟机是学习 Java 的基础,也是迈入高级 Java 开发工程师的必备知识点。所以今天这篇文章我们来聊聊如何从零开始学习 Java 虚拟机。
深入浅出Java虚拟机
对于刚刚接触 JVM 的同学来说,JVM 就像一个黑盒一样,完全不知道这是一个什么东西。所以对于小白来说,最重要是搞清楚 JVM 到底是干嘛的,以及其常用的知识框架。针对这样的需求,可以看一下《深入理解Java虚拟机》,这本书是国内学习 JVM 的必备书籍。通过阅读这本书,你对 JVM 的一些知识点会了解得更加全面。
JVM与性能优化知识点整理
一、JVM内存区域划分
1.程序计数器(线程私有)
2Java栈(线程私有)
3.本地方法栈(线程私有)
4.堆(线程共享)
5.方法区(线程共享)
6.直接内存(线程共享)
二、JVM执行子系
1.Class类文件结
1.1Java跨平台的基础.
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基于栈的字节码解释执行引擎
三、垃圾回收器和内存分配策略
1Java中是值传递还是引用传递?
2.引用类型
3.基本垃圾回收算法
3.1按照基本回收策略分
3.2按分区对待的方式分
3.3按系统线程分
4.分代处理垃圾.
5JAVA中垃圾回收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.通用程序设
五、性能优化
1.常用的性能评价/测试指标
1.1响应时间
1.2并发数
1.3吞吐量
1.4关系
2.常用的性能优化手段
2.1避免过早优化
2.2进行系统性能测试
2.3寻找系统瓶颈,分而治之,逐步优化.
2.4前端优化常用手段
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存储性能优化
由于文章篇幅过长,小编整理成一套PDF文档的格式把JVM以及性能优化解析以及《深入浅出Java虚拟机》整理完成,获取该文档方式:关注我私信回复【架构书籍】即可
记得帮忙转发分享此文后私信我哟!
JVM内存区域划分
JVM执行子系
垃圾回收器和内存分配策略
编写高效优雅Java程序
性能优化
由于文章篇幅过长,小编整理成一套PDF文档的格式把JVM以及性能优化解析以及《深入浅出Java虚拟机》整理完成,获取该文档方式:关注我私信回复【架构书籍】即可
记得帮忙转发分享此文后私信我哟!
猜你喜欢
- 2024-10-07 让 Java 程序运行更快的 15 个技巧,肯定有你不知道的
- 2024-10-07 900行"又臭又长"的类重构,IDEA用几分钟就搞定
- 2024-10-07 坑!python用空列表作为默认参数,让我怀疑遇到了灵异代码
- 2024-10-07 Java8函数式编程深入浅出(函数式编程和面向对象的区别)
- 2024-10-07 详解synchronized和锁升级,以及偏向锁和轻量级锁的升级
- 2024-10-07 Java开发过程中提升代码复用性的方法及规范总结
- 2024-10-07 线上一次fullgc搞得鸡飞狗跳后,我总结了这篇文章
- 2024-10-07 接口性能优化技巧,有点硬(接口调优)
- 2024-10-07 聊聊那些奇葩的代码规范 —— 代码放一行
- 2024-10-07 Java进程CPU占用高导致的网页请求超时的故障排查
- 10-02基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- 10-02Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- 10-02AWD-LSTM语言模型是如何实现的_lstm语言模型
- 10-02NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 10-02使用ONNX和Torchscript加快推理速度的测试
- 10-02tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- 10-02Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- 10-02Gateway_gateways
- 最近发表
-
- 基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- AWD-LSTM语言模型是如何实现的_lstm语言模型
- NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 使用ONNX和Torchscript加快推理速度的测试
- tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- Gateway_gateways
- Coze开源本地部署教程_开源canopen
- 扣子开源本地部署教程 丨Coze智能体小白喂饭级指南
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)