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内存区域
一.内存分配概述
随机推荐
- Java基础之RTTI 运行时类型识别
运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息. 多态(polymorphism)是基于R ...
- shell脚本练习题
下面列出了几个linux学习中的shell脚本题目 1.九九乘法表 #!/bin/bash echo "九九乘法表" # 注意((之间不能有空格.加减乘除的格式.还有转义字符\*. ...
- 【shell编程基础0】bash shell编程的基本配置
前面一篇“shell编程之变量篇”主要讲述下shell编程的变量的基本知识:设置变量的方式,自定义变量和环境变量的差别,变量的替换.删除.测试等. 这一篇主要是讲述在bash shell下的一些基本配 ...
- finally块执行时间
finally块在代码中什么时候被执行? 在Java语言的异常处理中,finally块的作用十九为了保证无论出现什么情况,finally块里面的代码一定会被执行.由于程序执行return就以为这结束对 ...
- android参数传递的几种方法
Intent Intent i=new Intent(当前Activity.this,目标Activity.class); 1.传单值 传入: i. i.putExtra("名称" ...
- 我们一起学Docker(一)
一.什么是Docker? Docker是一个基于LXC(Linux Container,Linux容器),以及cgroup的上层工具,通过对LXC,cgroup及相关系统命令的封装,使得用户可以非常方 ...
- python自动化测试应用-番外篇--接口测试1
篇1 book-python-auto-test-番外篇--接口测试1 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),至今<安卓a ...
- Python、PyCharm的安装及使用方法(Mac版)
上周跟朋友喝咖啡时聊起我想学Python,她恰好也有这个打算,顺便推荐了一本书<编程小白的第1本Python入门书>,我推送到Kindle后,随手翻看了下,用语平实,简洁易懂. 之前在R语 ...
- 关联分析:FP-Growth算法
关联分析又称关联挖掘,就是在交易数据.关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式.关联.相关性或因果结构.关联分析的一个典型例子是购物篮分析.通过发现顾客放入购物篮中不同商品 ...
- JS模式---命令模式
var opendoor = { execute: function () { console.log("开门"); } }; var closedoor = { execute: ...