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内存区域
一.内存分配概述
随机推荐
- C# 调用CMD执行命令行
这几天用c#做了一个项目,其中一个功能是要把生成的临时文件隐藏,同时,不能在屏幕上有调用CMD的痕迹,这里生成的临时文件的绝对路径为delfile为文件的绝对路径, 代码如下: private voi ...
- Java第二章 变量
1.什么是变量? 存储数据的基本单位. 2.数据类型分为: 基本类型和引用数据 3.基本数据类型和引用数据类型的区别: 基础数据:不同的变量会分配不同的存储空间,改变一个变量不会影响另一个变量 引用数 ...
- 利用php数组函数进行函数式编程
因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一 ...
- 性能优化之AJAX
明天就放假啦~哈哈.四月份好像还没有输出呢,吓得我赶紧写点东西... Ajax是高性能JavaScript的基础. Ajax,从最基本的层面来说,是一种与服务器通信而无需重载页面的方法.数据可以从服务 ...
- HBase应用快速学习
HBase是一个高性能.面向列.可伸缩的开源分布式NoSQL数据库,是Google Bigtable的开源实现. HBase的思想和应用和传统的RDBMS,NoSQL等有比较大的区别,这篇文章从HBa ...
- JS数组根据属性来实现排序
var data = [{ name: "zhao", age: }, { name: "qian", age: }, { name: "sun&qu ...
- iOS获取视频中的指定帧的两种方法
方法一 :AVFoundation #import <AVFoundation/AVFoundation.h> - (UIImage *)thumbnailImageForVideo:(N ...
- angular购物车
<body ng-app> <div class="container" ng-controller="carController"> ...
- redis 链表
redis 链表 前言 借鉴了 黄健宏 的 <<Redis 设计与实现>> 一书, 对 redis 源码进行学习 欢迎大家给予意见, 互相沟通学习 概述 redis 的链表结构 ...
- [Linux] PHP程序员玩转Linux系列-升级PHP到PHP7
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...