【Java进阶】五分钟快速掌握JVM优化概念、常用命令、工具、JUC、多线程、GC等知识
〇、概述
(一)资料
史上最全最详细的JVM优化方案:http://www.360doc.com/content/22/0513/10/34195792_1031121509.shtml
(二)内容概括
一、概念
(一)JVM
(二)JUC
(三)GC
二、命令
(一)JVM优化命令
1、堆内存参数配置
-Xms10g :JVM启动时申请的初始堆内存值
-Xmx20G :JVM可申请的最大Heap值
-Xmn3g : 新生代大小,一般设置为堆空间的1/3 1/4左右,新生代大则老年代小
-Xss :Java每个线程的Stack大小
-XX:PermSize :持久代(方法区)的初始内存大小
-XX:MaxPermSize : 持久代(方法区)的最大内存大小
-XX:SurvivorRatio : 设置新生代eden空间和from/to空间的比例关系,关系(eden/from=eden/to)
-XX:SurvivorRatio=8:设置新生代Eden和Survivor比例为 8:1。
-XX:NewRatio=4:设置老年代与年轻内存比例为 4:1。
2、调试跟踪参数配置
-XX:+PrintGC :打印GC日志
-XX:+PrintGCDetailsGC :时的详细堆信息
-XX:+PrintHeapAtGC :打印GC前后的堆信息
-XX:+PrintGCTimeStamps :输出GC发生时间,输出的时间为虚拟机启动的偏移量
-XX:+PrintGCApplicationConcurrentTime :输出应用程序执行时间
-XX:+PrintGCApplicationStoppedTime :输出应用程序由于GC产生停顿的时间
-XX:+PrintRefrenceGC :输出软引用、弱引用、虚引用和Finalize队列
-XX:+HeapDumpOnOutOfMemoryError :产生OOM时可以在内存溢出时导出整个堆信息
-XX:HeapDumpPath :导出堆文件存放路径
-XX:+TraceClassLoading :跟踪类加载信息
-XX:+TraceClassUnloading :跟:踪类卸载信息
-XX:PrintClassHitogram :查看系统中的类的分布情况(占用空间最多、实例数量空间大小)
-XX:+PrintVMOptions :打印虚拟机接收到的命令行显示参数
-XX:+PrintCommandLineFlags :打印虚拟机的显式和隐式参数
-XX:+PrintFlagsFinal :打印虚拟机的所有系统参数
3、GC参数设置
(1)串行收集器相关的参数
-XX:+UseSerialGC :新生代、老年代使用串行收集器
-XX:SurvivorRatio :设置eden区和survivor区大小的比例
-XX:PretenureSizeThreshold,:当对象大小超过此值时,直接分配到老年代
-XX:MaxTenuringThreshold :设置对象进入老年代的最大年龄
(2)并行相关的参数
-XX:+UseParNewGC :新生代使用并行收集器
-XX:+UseParallelOldGC :老年代使用并行回收收集器
-XX:+ParallelGCThreads :设置垃圾回收线程数,一般最好与CPU数量相当,默认情况下,当CPU数量小于8个时,ParallelGCThreads的值相当于CPU数量,当CPU数量大于8个时,ParallelGCThreads的值等于3+((5*CPU_COUNT)/8
-XX:MaxGCPauseMillis :设置最大垃圾收集停顿时间
-XX:GCTimeRatio :设置吞吐量大小,它的值是一个0~100之间的整数,假设值为n,那么系统将花费不超过1/(1+n)的时间用于垃圾收集
-XX:+UseAdaptiveSizePolicy :打开自适应GC策略,JVM对新生代的大小、eden和survivior的比例、晋升老年代对象年龄等参数自动调整
(3)CMS回收器相关的参数
-XX:+UseConcMarkSweepGC :启用CMS
-XX:ParallelCMSThreads :设置CMS线程数量
-XX:CMSInitiatingOccupancyFraction :默认68当老年代的空间超过68%时会执行一次CMS回收
-XX:UseCMSCompactAtFullCollection :设置CMS结束后是否需要进行一次内存空间整理
-XX:CMSFullGCsBeforeCompaction :进行多少次CMS后进行内存空间压缩
-XX:+CMSClassUnloadingEnabled :允许对类元数据区进行回收
-XX:CMSInitiatingPermOccupancyFraction :当永久区占用率达到此值时进行CMS回收(须激活CMSClassUnloadingEnabled)
-XX:UseCMSInitiatingOccupancyOnly:只要达到阈值时进行CMS回收
(4)G1 回收器相关的参数
-XX:+UseG1GC :使用G1
-XX:MaxGCPauseMillis :最大垃圾收集停顿时间
-XX:GCPauseIntervalMillis :最大停顿间隔时间
(二)JUC命令
三、工具
(一)jdk工具
【Java进阶】五分钟快速掌握JVM优化概念、常用命令、工具、JUC、多线程、GC等知识的更多相关文章
- Java进阶(五十一)必须记住的Myeclipse快捷键
Java进阶(五十一)必须记住的Myeclipse快捷键 在调试程序的时候,我们经常需要注释一些代码,在用Myeclipse编程时,就可以用 Ctrl+/ 为选中的一段代码加上以 // 打头的注释:当 ...
- Java进阶(五十三)屡试不爽之正则表达式
Java进阶(五十三)屡试不爽之正则表达式 在线测试网址: http://tool.oschina.net/regex/# 上面的在线测试网址,含有正则表达式的生成,非常实用.大家共勉之! 匹配中文: ...
- Java进阶(五十一)Could not create the view: An unexpected exception was thrown
Java进阶(五十一)Could not create the view: An unexpected exception was thrown 今天打开Myeclipse10的时候,发现server ...
- Java进阶(五十二)利用LOG4J生成服务日志
Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...
- 零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形动画
原文:零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形动画 零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形 ...
- Linux 系统基础优化和常用命令
目录 Linux 系统基础优化和常用命令 软连接 tar解压命令 gzip命令 netstart命令 ps命令 kill命令 killall命令 SELinux功能 iptables防火墙 Linux ...
- 运维 07 Linux系统基础优化及常用命令
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...
- Java进阶专题(十一) 想理解JVM看了这篇文章,就知道了!(中)
前言 上次讲解了JVM内存相关知识,今天继续JVM专题. JVM垃圾回收算法 什么是垃圾回收 程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导致内存溢 ...
- 【Java】15分钟快速体验阿里Java诊断工具Arthas
[墙裂推荐]15分钟快速体验阿里Java诊断工具Arthas : https://alibaba.github.io/arthas/arthas-tutorials?language=cn&i ...
随机推荐
- .NET 部署Https(SSL)通过代码方式
在上一个文章中,传送门,给大家介绍了怎么在配置文件中使用 Kestrel 部署 Https,正好今天有小伙伴稳问到:可以通过代码的方式实现 Kestrel 的 Https 的部署吗?答案是肯定的,我们 ...
- Vmware部署Linux无人值守安装Centos7系统
Linux - 无人值守安装服务 # 需求分析 - 使用光盘镜像来安装 Linux 系统的方式; 坦白讲, 该方法适用于只安装少量 Linux 系统的情况, 如果生产环境中有数百台服务器都需安装系统, ...
- 使用docker-compose方式安装redash
转载自:https://anjia0532.github.io/2019/07/08/redash/ ## 安装必要工具 apt install -y pwgen python-pip pip ins ...
- 关于HM NISEDIT在新版系统下编译并运行提示权限不足问题的解决方案
如果你使用过NSIS为你的项目制作过安装包,那HM nisedit一定是你绕不过去的槛,作为NSIS号称的最佳免费IDE/编辑器,功能齐全,与NSIS配合性能强悍,实至名归.只是开发作者最后版本更新在 ...
- JSP实现登录功能(页面带样式)
功能要求 1.完成两个页面 2.第一个登陆页面login. jsp 3.第二个用户管理页面useManage. jsp 4.有登录功能(能进行用户名密码的校验,用户名若为自己的学号密码为班级号,允许登 ...
- POJ2955 Brackets (区间DP)
很好的区间DP题. 需要注意第一种情况不管是否匹配,都要枚举k来更新答案,比如: "()()()":dp[0][5]=dp[1][4]+2=4,枚举k,k=1时,dp[0][1]+ ...
- Es 学习笔记 (1)
目录 前言 什么是es? es数据组织类比 应用场景 核心概念 集群 节点(node) 索引(Index) 文档类型(Type) 文档(Document) Mapping 核心简单域类型 分片(sha ...
- lombok下载和安装
lombok是什么 第三方的组件:使用注解来简化类的编写,注解替换set/get/构造 注解: @setter @getter @NoArgsConstructor @AllArgsConstruct ...
- 解决在JS中阻止定时器“重复”开启问题、Vue中定时器的使用
1.问题描述 在一些需求开发中.需要设定软件提供服务的时间段(营业时间).这时可以选择定时器来实现.可以选择让定时器每隔一段时间检测当前时间是否在服务时间.到达服务时间.进入服务状态.未到服务时间.进 ...
- 解决springboot+vue+mybatis中,将后台数据分页显示在前台,并且根据页码自动跳转对应页码信息
文章目录 先看效果 1.要考虑的问题,对数据进行分页查询 2.前端和后台的交互 先看效果 1.要考虑的问题,对数据进行分页查询 mapper文件这样写 从每次开始查询的位置,到每页展示的条数, < ...