调整了一下JVM内存,程序快了700%,Java程序优化笔记
Posted java码农之路1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调整了一下JVM内存,程序快了700%,Java程序优化笔记相关的知识,希望对你有一定的参考价值。
Java程序性能优化是一个永远逃不开的话题,优化无处不在!一个偶然间,小编得到了一份Java程序性能优化的笔记,小编读完这份笔记后大为惊叹,实在是写的太好了,不忍独乐乐,于是把这份笔记免费分享出来,供大家参阅,共同学习,共同成长!
这份笔记涵盖了:Java性能调优概述、设计优化、Java程序优化、并行程序开发及优化、JVM调优、Java性能调优工具!
由于文章篇幅的限制,接下来小编只能为大家展示完整目录和部分内容,完整版的免费获得方式放在了文末!(具体的调优方式全部都在笔记之中)
Java性能调优概述
性能概述
- 看懂程序的性能
- 性能的参考指标
- 木桶原理与性能瓶颈
- AmdahI定律
性能调优的层次
- 设计调优
- 代码调优
- JVM调优
- 数据库调优
- 操作系统调优
基本调优策略和手段
- 优化的一般步骤
- 系统优化注意事项
设计优化
善用设计模式
- 单例模式
- 代理模式
- 享元模式
- 装饰者模式
- 观察者模式
- Value Object模式
- 业务代理模式
常用优化组件和方法
- 缓冲(Buffer)
- 缓存(Cache)
- 对象复用——” 池”
- 并行替代串行
- 负裁均衡
- 时间换空间
- 空间换时间
Java程序优化
字符串优化处理
- String对象及其特点
- subString ()方法的内存泄漏
- 字符串分割和查找
- StringBuffer和StringBuilder
核心数据结构
- List接口
- Map接口
- Set接口
- 优化集合访问代码
- RandomAccess接口
使用NIO提升性能
- NIO的Buffer类族和Channel
- Buffer的基本原理
- Buffer的相关操作
- MappedByteBuffer性能评估
- 直接内存访问
引用类型
- 强引用
- 软引用
- 弱引用
- 虚引用
- WeakHashMap类及其实现
有助于改善性能的技巧
- 慎用异常
- 使用局部变量
- 位运算代替乘除法
- 替换switch
- 一维数组代替二维数组
- 提取表达式
- 展开循环
- 布尔运算代替位运算
- 使用arrayCopy ()
- 使用Buffer进行I/O操作
- 使用clone ()代替new
- 静态方法替代实例方法
并行程序开发及优化
并行程序设计模式
- Future模式
- Master-Worker模式
- Guarded Suspension模式
- 不变模式
- 生产者-消费者模式
JDK多任务执行框架
- 无限制线程的缺陷
- 简单的线程池实现
- Executor框架
- 自定义线程池
- 优化线程池大小
- 扩展ThreadPoolExecutor
JDK并发数据结构
- 并发List
- 并发Set
- 并发Map
- 并发Queue
- 并发Deque
并发控制方法
- Java内存模型与volatile
- 同步关键字synchronized
- ReentrantLock重入锁
- ReadWriteLock读写锁
- Condition对象
- Semaphore信号量
- ThreadLocal线程局部变量
“锁”的性能和优化
- 线程的开销
- 避免死锁
- 减小锁持有时间
- 减小锁粒度
- 读写分离锁来替换独占锁
- 锁分离
- 重入锁和内部锁
- 锁粗化
- 自旋锁
- 锁消除
- 锁偏向
无锁的并行计算
- 非阻塞的同步/无锁
- 原子操作
- Amino框架介绍
- Amino集合
- Amino树
- Amino图
- Amino简单调度模式
协程
- 协程的概念
- Kllim框架简介
- Task及其状态
- Fiber及其状态
- Kilim开发环境配置
- Kilim之Hello World
- 多任务通信
- Klim实例及性能评估
JVM调优
Java虚拟机内存模型
- 程序计数器
- Java虚拟机栈
- 本地方法栈
- Java堆
- 方法区
JVM内存分配参数
- 设置最大堆内存
- 设置最小堆内存
- 设置新生代
- 设置持久代
- 设置线程栈
- 堆的比例分配
- 堆分配参数总结
垃圾收集基础
- 垃圾收集的作用
- 垃圾回收算法与思想
- 垃圾收集器的类型
- 评价GC策略的指标
- 新生代串行收集器
- 老年代串行收集器
- 并行收集器
- 新生代并行回收(Parallel Scavenge)收集器
- 老年代并行回收收集器
- CMS收集器
- G1收集器(Garbage First)
- Stop the World案例
- 收集器对系统性能的影响
- GC相关参数总结
常用调优案例和方法
- 将新对象预留在新生代
- 大对象进入老年代
- 设置对象进入老年代的年龄
- 稳定与震荡的堆大小
- 吞吐量优先案例
- 使用大页案例
- 降低停顿案例
实用****JMVM参数
- JIT编译参数
- 堆快照(堆Dump)
- 错误处理
- 取得GC信息
- 类和对象跟踪
- 控制GC
- 选择类校验器
- Solaris下线程控制
- 使用大页
- 压缩指针
实战JVM调优
- Tomcat简介与启动加速
- Web应用程序介绍
- JMeter介绍与使用
- 调优前Web应用运行状况
- 调优过程
Java性能调优工具
Linux命令行工具
- top命令
- sar命令
- vmstat命令
- iostat命令
- pidstat工具
Windows工具
- 任务管理器
- perfmon性能监控工具
- Process Explorer
- pslist命令行
JDK命令行工具
- jps命令
- jstat命令
- jinfo命令
- jmap命令
- jhat命令
- jstack命令
- jstatd命令
- hprof工具
JConsole工具
- JConsole连接Java程序
- Java程序概况
- 内存监控
- 线程监控
- 类加载情况
- 虚拟机信息
- MBean管理
- 使用插件
Visual VM多合一工具
- Visual VM连接应用程序
- 监控应用程序概况
- Thread Dump和分析
- 性能分析
- 快照
- 内存快照分析
- MBean管理
- TDA使用
- BTrace介绍
Visual VM对OQL的支持
- Visual VM的OQL基本语法
- 内置heap对象
- 对象函数
- 集合/统计函数
- 程序化OQL
MAT内存分析工具
- 初识MAT
- 浅堆和深堆
- 支配树(Dominator Tree)
- 垃圾回收根
- 内存泄露检测
- 最大对象报告
- 查找支配者
- 线程分析
- 集合使用情况分析
- 扩展MAT
MAT对OQL的支持
- Select子句
- From子句
- Where子句
- 内置对象与方法
JProfle简介
- JProfile使用配置
- 内存视图
- 堆快照
- CPU视图
- 线程视图
- JVM统计信息
如何获得这份优质的资料呢?
快速领取通道:点这里直达免费获取!诚意满满!!!
Java面试精选题、架构实战文档传送门:https://jq.qq.com/?_wv=1027&k=iWJZw1rp
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!!!
以上是关于调整了一下JVM内存,程序快了700%,Java程序优化笔记的主要内容,如果未能解决你的问题,请参考以下文章