JVM学习笔记二:JVM参数
所有线程共享的内存主要有两块:堆内存和方法区。
其中堆内存分为两块:新生代Young generation(Eden区、From Survivor区、To Survivor区)、老年代Tenured generation。
方法区有人也称之“永久代”,但是它们并不等同。方法区是JVM的规范,而永久代是该规范的一种实现方式。从jdk1.7开始已经逐步去除“永久代”,取而代之的是“元空间”(Metaspace)。
元空间与永久代之间最大的区别在于:**元空间并不在虚拟机中,而是使用本地内存**。因此,默认情况下,元空间的大小仅受本地内存限制
下面是JVM的一些主要参数:
### 1. 基本参数
参数 | 描述
---|---
-XX:+ | 打开
-XX:- | 关闭
### 2. 内存大小配置参数
参数 | 描述
---|---
-Xms | 初始堆内存大小
-Xmx | 最大堆内存大小
-Xmn | 年轻代内存大小
-Xss | 线程私有的虚拟机栈大小
-XX:MaxPermSize=64m | 永久代最大值
-XX:PermSize | 永久代初始值
-XX:MetaspaceSize | 元空间初始大小
-XX:MaxMetaspaceSize | 元空间最大值
-XX:MaxDirectMemorySize | 直接内存大小,默认与Java堆最大值(-Xmx)一样
### 3. JVM调试参数
参数 | 描述
---|---
-verbose:gc | 记录GC运行及运行时间
-XX:+PrintGCDetails | 记录GC运行时的详细数据信息,以及在进程结束时打印当前的内存各区域分配情况。
-XX:+PrintGCTimeStamps | 打印垃圾收集时间戳
-XX:+HeapDumpOnOutOfMemoryError | 在内存溢出的时候生成Heap dump文件
-verbose:class、-XX:+TraceClassLoading | 查看类加载信息(要求Product版虚拟机)
-XX:+TraceClassUnLoading | 查看类卸载信息(要求FastDebug版虚拟机)
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 | 用于远程调试
### 4. 垃圾收集器
参数 | 描述
---|---
-XX:+UseSerialG | 使用Serial+Serial Old的收集器组合进行内存回收。
-XX:+UseParNewGC | 使用ParNew+Serial Old的收集器组合进行内存回收。
-XX:+UseConcMarkSweepGC | 使用ParNew+CMS+Serial Old的收集器组合进行内存回收。Serial Old作为出现Concurrent Mode Failure失败后的后备收集器使用。
-XX:+UseParallelGC | 使用Parallel Scavenge+Serial Old(PS Mark Sweep)收集器组合进行内存回收。
-XX:+UseParallelOldGC | 使用Parallel Scavenge+Parallel Old收集器组合进行内存回收。
### 5. JVM调优参数
参数 | 描述
---|---
-XX:SurvivorRatio | 新生代中Eden区域和Survivor区域(单个Survivor)的容量比值,默认为8
-XX:NewRatio | 堆内存中新生代和老生代的容量比值。
-XX:PretenureSizeThreshold | 直接晋升到老年代的对象大小,大于该值的对象直接在老年代分配。
-XX:MaxTenuringThreshold | 对象在新生代中能存活的最大年龄。
-XX:+UseAdaptiveSizePolicy | 动态调整Java堆中各个区域的大小以及进入老年代的年龄(限Parallel Scaverge收集器)
-XX:+HandlePromotionFailure | 允许老年代分配担保失败,开启后可以冒险YGC。
-XX:ParallelGCThreads | 设置并行GC时进行内存回收的线程数
-XX:GCTimeRatio | 默认为99,即允许1%的GC时间。GC时间占总时间的比例由公式1/(1+GCTimeRatio)得出(限Parallel Scaverge收集器)
-XX:MaxGCPauseMillis | 设置GC的最大停顿时间(限Parallel Scaverge收集器)
-XX:+CMSInitialingOccupancyFraction | 设置CMS收集器在老年代空间被使用多少后触发Full GC。默认值是68,即68%。(限CMS收集器)
-XX:+UseCMSCompactionAtFullCollection | 设置CMS在完成垃圾收集后进行一次内存碎片整理。(限CMS收集器)
-XX:+CMSFullGCsBeforeCompaction | 设置CMS执行多少次GC后,下次GC时进行一次内存碎片整理,默认为0。即每次都整理。
-Xnoclassgc | 不回收无用类
JVM学习笔记二:JVM参数的更多相关文章
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- java jvm学习笔记二(类装载器的体系结构)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 在了解java虚拟机的类装载器之前,有一个概念我们是必须先知道的,就是java的沙箱,什 ...
- JVM学习笔记:JVM的体系结构与JVM的生命周期
1 JVM在java平台中的位置 1.1 Java平台组成 Java平台主要由Java虚拟机和Java API这两部分组成.参考Oracle官网. 1.2 java平台结构图 JDK1.2开始,迫于J ...
- jvm学习笔记二(减少GC开销的建议)
一:触发主GC(Garbage Collector)的条件 JVM进行次GC的频率很高,但因为这种GC占用时间极短,所以对系统产生的影响不大.更值得关注的是主GC的触发条件,因为它对系统影响很明显.总 ...
- JVM学习笔记(二):垃圾收集
程序计数器. 虚拟机栈. 本地方法栈3个区域随线程而生,随线程而灭:栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作. 每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这 ...
- 【JVM学习笔记二】垃圾收集器与内存分配策略
1. 概述 1) GC的历史比Java久远 2) GC需要完成的三件事: | 哪些内存需要回收 | 什么时候回收 | 如何回收 3) Java内存运行时区域各个部分: | Java虚拟机栈.计数器.本 ...
- JVM学习笔记二:垃圾收集算法
垃圾回收要解决的问题: 哪些内存需要回收? 线程私有区域不需要回收,如PC.Stack.Native Stack:Java 堆和方法区需要 什么时候回收? 以后的文章解答 如何回收? 首先进行对象存活 ...
- JVM 学习笔记二 :JVM内存区域
一.内存分配概述
随机推荐
- php获取checkbox数组的表单数据
提交表单的时候,对于checkbox多选框,name="field[]",此时php获取的数组为:从0开始的索引数组:如果name="field[n]" 有数字 ...
- 老李分享:网页爬虫java实现
老李分享:网页爬虫java实现 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...
- C# 快速高效率复制对象另一种方式 表达式树
1.需求 在代码中经常会遇到需要把对象复制一遍,或者把属性名相同的值复制一遍. 比如: public class Student { public int Id { get; set; } publi ...
- 静态链表实现(A-B)+(B-A)【代码】
-----------------------------------------------第一次发代码,写在前面------------------------------------------ ...
- jdk1.8新特性,还不知道的朋友还不看看,1.9都快出来了
一.接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:代码如下:interface Formula { ...
- 3.QT5.8支持中文输入法(附带老版本的解决+不理想的情况解决)
安装过程:http://www.cnblogs.com/dotnetcrazy/p/6725945.html 用了QT发现,中文输入法不能输入...一开始以为是输入法问题,后来发现,其他地方都可以中文 ...
- 在github上搭建免费的博客
github好多年前,大家都开始玩啦,我这个菜鸟近几年才开始.github不仅可以管理项目,还可以搭建博客.技术人员,一般用的博客为博客园,CSDN多一些.看到朋友们都弄一个,我也开始弄起来,先找点资 ...
- Java Excel 合并单元格
//合并单元格CellRangeAddress cra = new CellRangeAddress(0, 0, 0, 4);sheet.addMergedRegion(cra);
- Neural Networks and Deep Learning(神经网络与深度学习) - 学习笔记
catalogue . 引言 . 感知器及激活函数 . 代价函数(loss function) . 用梯度下降法来学习-Learning with gradient descent . 用反向传播调整 ...
- 过滤器Filter(17/4/8)
1:是JavaWeb三大组件之一: Servlet.Lisener(2个感知监听器不需要配置).Filter 2:过滤器 它会在一组资源(jsp.servlet.css.html等等)的前面执行! 它 ...