第八章 有关垃圾收集的关键参数

一些命令行参数可以用来选择垃圾收集器,指定堆或代的大小,修改垃圾收集行为,获取垃圾收集统计数据。本章给出一些最常用的参数。有关各种各样参数更多完整的列表和详细信息可以参见第九章。注意:指定的数字可以以“m”或“M”结尾表示兆字节,以“k”或“K”结尾表示千字节,以“g”或“G”结尾表示千兆字节。

垃圾收集器的选择

选项 选择的垃圾收集器
–XX:+UseSerialGC Serial(串行收集器)
–XX:+UseParallelGC Parallel(并行收集器)
–XX:+UseParallelOldGC Parallel compacting(并行压缩收集器)
–XX:+UseConcMarkSweepGC Concurrent mark–sweep (CMS)

垃圾收集器统计

选项 描述
–XX:+PrintGC 每次垃圾收集时输出基本信息。
–XX:+PrintGCDetails 每次垃圾收集时输出更详细的信息。
–XX:+PrintGCTimeStamps 在每次垃圾收集事件开始输出时间戳。与–XX:+PrintGC–XX:+PrintGCDetails一同使用。

堆和代的大小

选项 默认值 描述
–Xmsn 参见第五章 堆初始大小,以字节为单位。
–Xmxn 参见第五章 堆最大值,以字节为单位。
–XX:MinHeapFreeRatio=minimum
and
–XX:MaxHeapFreeRatio=maximum
40 (最小),70 (最大) 堆空闲空间与总大小的比值范围。应用在每个代上。例如,如果最小值为30并且某个代的空闲百分比低于30%时,这个代会扩展以保持30%的空闲空间。相似的,如果最大值是60并且空闲百分比超过60%,代会收缩以保持只有60%的空闲空间。
–XX:NewSize=n 依赖平台 年轻代的初始大小,以字节为单位。
–XX:NewRatio=n 客户端2,服务器8 年轻代和年老代的比例。例如,如果n是3,比例是1:3,Eden和生还者区的加和是年轻代和年老代大小总和的1/4。
–XX:SurvivorRatio=n 32 每个生还者区与Eden区的比例。例如,如果n是7,每个生还者区是年轻代的1/9(不是1/8,因为有2个生还者区)。
–XX:MaxPermSize=n 依赖平台 持久代的最大值。

并行和并行压缩收集器的选项

选项 默认值 描述
–XX:ParallelGCThreads=n CPU的个数 垃圾收集的线程数。
–XX:MaxGCPauseMillis=n 期望垃圾收集器的暂停时间小于等于n。
–XX:GCTimeRatio=n 99 设置垃圾收集时间占总时间的目标为 1/(1+n)。

CMS收集器的选项

选项 默认值 描述
–XX:+CMSIncrementalMode 禁用 启用增量模式。并行阶段是增量的,并行阶段周期性暂停以释放处理器给应用程序。
–XX:+CMSIncrementalPacing 禁用 是否允许CMS处理器基于应用程序行为自动放弃之前的处理器。
–XX:ParallelGCThreads=n CPU的个数 年轻代并行收集和年老代并行收集部分的线程数。

【摘录】JAVA内存管理-有关垃圾收集的关键参数的更多相关文章

  1. 【摘录】JAVA内存管理-JVM垃圾收集机制

    很多公司都有自己的JVM实现,被Oracle收购的sun公司开发的JVM实现名为HotSpot.这一实现是我们最常用到的. 还有哪些JVM实现呢?比较有名的有Oracle之前收购的BEA公司(就是以前 ...

  2. 【摘录】JAVA内存管理-评估垃圾收集性能的工具

    第七章 评估垃圾收集性能的工具 各种各样的诊断和监视工具可以用来评估垃圾收集性能.本章简要概述他们中的几个.可以通过第九章中的“Tools and Troubleshooting”链接获得更多的信息. ...

  3. 揭开Java内存管理的面纱

    前言 相对于C.C++这些高性能语言,Java有着让此类程序员羡慕的功能:内存自动管理.似乎这样,Java程序员不用再关心内存,也不用去了解相关知识.但结果真的是这样吗?特别对于我们这种Android ...

  4. Java内存管理笔记

    java内存管理机制 在java中,内存管理由JVM完全负责,java中的"垃圾回收器"负责自动回收无用对象占据的内存资源,这样可以大大减少程序猿在内存管理上花费的时间,可以更集中 ...

  5. Java 内存管理

    java 内存管理机制 JAVA 内存管理总结 java 是如何管理内存的 Java 的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字 new 为 ...

  6. 简单的例子 关于Java内存管理的讲解

    我想做的是,逐行读取文件,然后用该行的电影名去获取电影信息.因为源文件较大,readlines()不能完全读取所有电影名,所以我们逐行读取. 就这段代码,我想要在位置二处使用base64,然后结果呢? ...

  7. java内存管理机制

    JAVA 内存管理总结 1. java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 ( ...

  8. java内存管理(堆、栈、方法区)

    java内存管理 简介 首先我们要了解我们为什么要学习java虚拟机的内存管理,不是java的gc垃圾回收机制都帮我们释放了内存了吗?但是在写程序的过程中却也往往因为不懂内存管理而造成了一些不容易察觉 ...

  9. Java内存管理及对Java对象管理

    Java内存管理及对Java对象管理 1Java内存管理 1.1Java中的堆和栈 通常来说,人们会将Java内存氛围栈内存(Stack)和堆内存(Heap). 栈内存用来保存基本类型的变量和对象的引 ...

随机推荐

  1. ubuntu 搭建Mercurial 服务(nginx)

    ubuntu 搭建Mercurial 服务(nginx) 环境:ubuntu 12.05  Mercurial 步骤: (1)安装nginx 和 Mercurial: sudo apt-get ins ...

  2. CDR快速制作苹果手机照片小图标

    本篇教程用CorelDRAW快速制作苹果手机照片小图标,在实现的过程中主要使用了旋转复制的方法,加之一些常用工具的用法处理,最后加上透明效果下的合并模式就好了,现在跟小编一起来看看详细的操作吧! 1. ...

  3. 创建一个dynamics CRM workflow (二) - Build in Workflows

    这里我们不着重讲解build in workflow. 但是, 如果要上手custom workflow, 我们必须要了解 build in workflow. build-in workflow 在 ...

  4. Python基础:条件判断 &&循环

    1:条件判断 2:循环 2.1:for 2.2  while 小结: continue :跳出本次循环 进行下次循环,  break :结束循环体.

  5. HH的项链 树状数组动态维护前缀

    #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const ...

  6. 在Django运行安装mysqlclient和pymysql

    推荐使用douban提供的pipy国内镜像服务,如果想手动指定源,可以在pip后面跟-i 来指定源. 下载mysqlclient为例: pip install mysqlclient -i http: ...

  7. BZOJ 1835 [ZJOI2010]基站选址 (线段树优化DP)

    题目大意:略 洛谷题面传送门 BZOJ题面传送门 注意题目的描述,是村庄在一个范围内去覆盖基站,而不是基站覆盖村庄,别理解错了 定义$f[i][k]$表示只考虑前i个村庄,一共建了$k$个基站,最后一 ...

  8. 执行目标文件引发的问题:syntax error: word unexpected (expe...

    今天不小心把一个目标文件当成了可执行文件放到开发板上进行执行,结果出现了这样一个问题:./hello_qt: line 1: syntax error: word unexpected (expect ...

  9. 猫狗分类--Tensorflow实现

    贴一张自己画的思维导图  数据集准备 kaggle猫狗大战数据集(训练),微软的不需要FQ 12500张cat 12500张dog 生成图片路径和标签的List step1:获取D:/Study/Py ...

  10. RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第六篇【AppiumLibrary等待函数介绍】

    http://blog.csdn.net/deadgrape/article/details/50622441 废话不多说,少年们请看下面. Wait Until Page Contains text ...