查看/设置JVM使用的垃圾收集器
一、设置垃圾收集器的参数
-XX:+UseSerialGC,虚拟机在Client模式下的默认值,Serial+Serial Old
-XX:+UseParNewGC,ParNew+Serial Old,在JDK1.8中已经不推荐使用并且将被移除(Java HotSpot(TM) Client VM warning: Using the ParNew young collector with the Serial old collector is deprecated and will likely be removed in a future release)。
-XX:+UseConcMarkSweepGC,ParNew+CMS
-XX:+UseParallelGC ,虚拟机在Server模式下的默认值,Parallel Scavenge+Serial Old
-XX:+UseParallelOldGC ,Parallel Scavenge+Parallel Old
-XX:+UseG1GC,G1 Young Generation+G1 Old Generation
二、使用Java代码测试
public class GCTest {
public static void main(String[] args) {
//-XX:+UseParallelOldGC和-XX:+UseParallelGC结果一样,因为MXBean名字一样,但是实际使用的不一样
List<GarbageCollectorMXBean> garbageCollectorMXBeans = ManagementFactory.getGarbageCollectorMXBeans();
for(GarbageCollectorMXBean gc:garbageCollectorMXBeans){
System.out.println(gc.getName());
System.out.println("--");
}
}
}
我这里使用JDK1.8测试,启动时输入JVM参数-XX:+PrintCommandLineFlags,该参数会打印JVM默认的优化参数。
测试结果:
1、指定参数-XX:+PrintCommandLineFlags -XX:+UseSerialGC
-XX:InitialHeapSize=16777216 -XX:MaxHeapSize=268435456 -XX:+PrintCommandLineFlags -XX:-UseLargePagesIndividualAllocation -XX:+UseSerialGC Copy -- MarkSweepCompact --
2、指定参数-XX:+PrintCommandLineFlags -XX:+UseParNewGC
-XX:InitialHeapSize=16777216 -XX:MaxHeapSize=268435456 -XX:+PrintCommandLineFlags -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC ParNew -- MarkSweepCompact -- Java HotSpot(TM) Client VM warning: Using the ParNew young collector with the Serial old collector is deprecated and will likely be removed in a future release
3、指定参数-XX:+PrintCommandLineFlags -XX:+UseConcMarkSweepGC
-XX:InitialHeapSize=16777216 -XX:MaxHeapSize=268435456 -XX:MaxNewSize=89481216 -XX:MaxTenuringThreshold=6 -XX:OldPLABSize=16 -XX:+PrintCommandLineFlags -XX:+UseConcMarkSweepGC -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC ParNew -- ConcurrentMarkSweep --
4、指定参数-XX:+PrintCommandLineFlags -XX:+UseParallelGC
-XX:InitialHeapSize=16777216 -XX:MaxHeapSize=268435456 -XX:+PrintCommandLineFlags -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC PS Scavenge -- PS MarkSweep --
5、指定参数-XX:+PrintCommandLineFlags -XX:+UseParallelOldGC
-XX:InitialHeapSize=16777216 -XX:MaxHeapSize=268435456 -XX:+PrintCommandLineFlags -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelOldGC PS Scavenge -- PS MarkSweep --
6、指定参数-XX:+PrintCommandLineFlags -XX:+UseG1GC
-XX:InitialHeapSize=16777216 -XX:MaxHeapSize=268435456 -XX:+PrintCommandLineFlags -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation G1 Young Generation -- G1 Old Generation --
三、使用内置JConsle查看
1、写一个一直运行的代码
public class GCTest { public static void main(String[] args) throws InterruptedException { while (true) { Thread.sleep(1000); } } }
2、打开命令行,输入jconsole
3、显示连接的Java程序
4、查看VM概要
5、也可以在MBean中查看
四、总结
-XX:+UseParallelGC和-XX:+UseParallelOldGC除了JVM参数不同,打印结果都一样,是因为设置了相同的MXBean名称,具体可以看一下这一篇文章:https://www.cnblogs.com/kelthuzadx/p/10924117.html
原文地址:https://www.cnblogs.com/weiqihome/p/12003130.html
- Kubernetes服务网格(第8部分):Linkerd作为入口控制器
- 使用RestSharp 库消费Restful Service
- Python-面向对像及其他
- 基于MongoDB GridFS的图片存储
- css3 过渡和2d变换——回顾
- Microsoft 防跨站点脚本库AntiXSS Library v4.2.1
- Compilify——让你在浏览器中编译.NET代码
- Python进阶-面向对象
- WCF RESTful服务的Google Protocol Buffers超媒体类型
- 使用CoreOs,Docker和Nirmata部署微服务类型的应用
- .NET 4 上的REST 框架
- 结合游戏开发与人工智能研究,游戏大厂 Ubisoft 成立AI研发部门
- Quartz.NET的管理工具
- Python-执行系统命令
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Js中String对象
- 如何让一个字符串执行?
- Array.apply(),new Array(),arr =[] 的区别
- 一文带你真正了解histroy
- 介绍一个可以离线查询 IP 来源和 ISP 信息的终端利器
- 这也太简单了吧!一个函数完成数据相关性热图计算和展示
- CentOS7安装Zookeeper
- CentOS7卸载OpenJDK,然后安装Oracle JDK
- Java停止线程的四种方法
- Educational Codeforces Round 95 (Rated for Div. 2) A-D
- Go服务迁到K8s后老抽风重启? 记一次完整的线上问题解决过程
- PHP的另一个高效缓存扩展:Yac
- 在PHP中操作临时文件
- 在线IDE开发入门之从零实现一个在线代码编辑器
- 树莓派4裸机基础教程:从hello world开始