JVM系列【6】GC与调优2.md
JVM系列笔记目录
- 虚拟机的基础概念
- class文件结构
- class文件加载过程
- jvm内存模型
- JVM常用指令
- GC与调优
了解HotSpot常用命令行参数
JVM的命令行参数参考: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
-标准 所有版本支持
-X 非标准 特定版本支持
-XX 不稳定 下个版本可能会取消
常见和本文中可能用到的参数记录一下,具体垃圾回收器的参数后续调优的详细说明。
| 参数 | 说明 |
|---|---|
| -Xmx | 最大可用内存 |
| -Xms | 初始内存,一般和-Xmx相同,避免重新分配 |
| -Xmn | 年轻代大小,JVM内存=年轻代+老年代大小+永久代(一般64M) |
| -XX:+PrintFlagsInitial | 打印默认参数值 |
| -XX:+PrintFlagsFinal | 打印最终参数值 |
| -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps |
打印GC情况、GC详细日志、GC日志时间戳 |
常见垃圾回收器组合参数设定:(1.8)
如何查看JVM默认的垃圾回收器?
java -XX:+PrintCommandLineFlags -version

- 通过GC日志来辨别是何种垃圾回收器
常见垃圾回收器组合参数设定:(1.8版本的)
>1. -XX:+UseSerialGC = Serial New (DefNew) + Serial Old 小型程序使用,默认情况下不会是这种选项,HotSpot会根据计算及配置和JDK版本自动选择收集器
>2. -XX:+UseParNewGC = ParNew + SerialOld 这个组合已经很少用(在某些版本中已经废弃)
>3. -XX:+UseConc(urrent)MarkSweepGC = ParNew + CMS + Serial Old
>4. -XX:+UseParallelGC = Parallel Scavenge + Parallel Old (1.8默认) 【PS + SerialOld】
>5. -XX:+UseParallelOldGC = Parallel Scavenge + Parallel Old
>6. -XX:+UseG1GC = G1
PS的GC日志详解
每一种垃圾回收器的日志是不一样。这里提供一个样例来详细解释PS的GC日志。
public class HelloGC{
public static void main(String[] args){
System.out.println("HelloGC!");
List list = new ArrayList();
for(;;){
// 死循环中每次分配1M大小的数组,存放在list中,JVM内存不足的时候会产生GC
byte[] b = new byte[1024*1024];
list.add(b);
}
}
}
编译后启动命令:java -Xmn10M -Xms40M -Xmx60M -XX:+PrintCommandLineFlags -XX:+PrintGC -XX:+UseParallelGC HelloGC
这里设置了最大内存为60M,初始内存为40M,新生代的内存为10M,使用PS垃圾回收器,并打印GC的回收情况。程序运行很快就会产生GC日志。
回收的日志情况:

HeapDump情况,0x000xxxx内存地址指的是:起始地址、使用空间结束地址、整体空间结束地址;

知识分享,转载请注明出处。学无先后,达者为先!
JVM系列【6】GC与调优2.md的更多相关文章
- jvm系列(五):tomcat性能调优和性能监控(visualvm)
tomcat服务器优化 1.JDK内存优化 根据服务器物理内容情况配置相关参数优化tomcat性能.当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃.因此一般建议堆的最 ...
- JVM系列【6】GC与调优1
JVM系列笔记目录 虚拟机的基础概念 class文件结构 class文件加载过程 jvm内存模型 JVM常用指令 GC与调优 GC基础知识 什么是垃圾 没有任何引用指向的一个对象或多个对象(循环引 ...
- JVM系列【6】GC与调优5-日志分析
JVM系列笔记目录 虚拟机的基础概念 class文件结构 class文件加载过程 jvm内存模型 JVM常用指令 GC与调优 主要内容 分析PS.CMS.G1的回收日志,目标使大概能读懂GC日志. 测 ...
- jvm系列(六):Java服务GC参数调优案例
本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响. 这段时间在整理jvm系列的文章,无意中发现本文,作者思路清晰通过步步分析最终解决问题. ...
- jvm系列:Java GC 分析
Java GC就是JVM记录仪,书画了JVM各个分区的表演. 什么是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之 ...
- visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优
文/朱季谦 最近在做了一些JVM监控与调优的事情,算是第一次实践,还比较陌生,故而先把这一次经验简单记下笔记,这样,对后面学习调优方面时,不至于又想不起来了.本文档主要总结在window本地环境远程对 ...
- jvm参数设置和性能调优
1.Java虚拟机运行时的数据区 2.常用的内存区域调节参数 -Xms:初始堆大小,默认为物理内存的1/64(<1GB):默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40% ...
- spark系列-7、spark调优
官网说明:http://spark.apache.org/docs/2.1.1/tuning.html#data-serialization 一.JVM调优 1.1.Java虚拟机垃圾回收调优的背景 ...
- JVM内存模型与性能调优
堆内存(Heap) 堆是由Java虚拟机(JVM,下文提到的JVM特指Sun hotspot JVM)用来存放Java类.对象和静态成员的内存空间,Java程序中创建的所有对象都在堆中分配空间,堆只用 ...
随机推荐
- ckeditor4.0以上使用行间距插件lineheight报错修改
①从百度上下载一个 ckeditor 行距包,解压放到ckeditor/plugins目录下. ②在config.js 中添加 config.extraPlugins += (config.extra ...
- Bootstrap4总结
一. bootstrap简介 Bootstrap,来自 Twitter(全国最大的微博),是目前最受欢迎的前端框架. bootstrap下载及演示 http://v3.bootcss.com 什么是b ...
- Fiddler的基本界面介绍
前言 fiddler的界面,主要是分以下6个模块. 一:主菜单栏: 可以参考:https://www.cnblogs.com/sjl179947253/p/7620524.html 二:工具栏: 1. ...
- ASP.NET Core 3.x启动时运行异步任务(一)
这是一个大的题目,需要用几篇文章来说清楚.这是第一篇. 一.前言 在我们的项目中,有时候我们需要在应用程序启动前执行一些一次性的逻辑.比方说:验证配置的正确性.填充缓存.或者运行数据库清理/迁移等 ...
- 再学ajax--第二天 | 基于php+mysql+ajax的表单注册、登录、注销
写在前面 ajax学习到了第二天,这次是用第一天封装的ajax函数,后端使用了php+mysql实现基本的注册,登录,注销. php是我前几个月get到的技能,我已经学习到了面向对象,知道各修饰符的含 ...
- xml的复习
xml的复习 1.概念:可扩展标记语言 2.功能: *存储数据 1.配置文件 2.在网络中传播 3.xml与html区别: xml语法严格,HTML语法松散 xml存储数据,HTML展示 ...
- SpringBoot-01-快速入门
SpringBoot 1. 快速入门 什么是Spring 轻量级的Java开源开发框架 为了解决企业级应用开发的复杂性而创建的,简化开发 Spring是如何简化Java开发的 为了降低Java开发 ...
- zookeeper(5) 客户端
zookeeper客户端主要负责与用户进行交互,将命令发送到服务器,接收服务器的响应,反馈给用户.主要分为一下三层: 用户命令处理层 用户命令处理层的功能是读取用户输入的命令,解析用户命令和输入参数, ...
- JavaFX桌面应用-构建程序框架
看到JavaFX应用很多人都会说JavaFX应用太丑了,确实JavaFX比起Qt.MFC.Delphi这些界面确实丑了一点,但也不是没有可以美化的空间. 跟网页一样,单纯HTML不加任何CSS的时候也 ...
- nginx安装步骤
1.下载地址:下载nginx压缩包wget -c https://nginx.org/download/nginx-1.10.1.tar.gz2.配置nginx安装所需的环境yum install g ...