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

一些命令行参数可以用来选择垃圾收集器,指定堆或代的大小,修改垃圾收集行为,获取垃圾收集统计数据。本章给出一些最常用的参数。有关各种各样参数更多完整的列表和详细信息可以参见第九章。注意:指定的数字可以以“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. Mysql重复数据查询置为空

    前两天产品有个需求,相同的商品因为价格不同而分开展示,但是明细还是算一条明细,具体区分展示出商品的价格和数量信息,其他重复的商品信息要置空. 需求并不难,用程序代码循环处理就可以了.但是后面涉及到打印 ...

  2. 任务调度开源框架Quartz概述

    任务调度开源框架Quartz 几乎每个项目中都用到了自动任务处理功能.所以在任务调度的功能很常用,但是一个好的任务调度程序是一个颇具挑战性的工作.最近用到Quartz这个框架,感觉很好,所以进行学习. ...

  3. codevs 2800 送外卖 floyd + Tsp

    简单的状压动归 #include<cstdio> #include<algorithm> using namespace std; const int N=17; const ...

  4. js将timestamp对象与时间字符串之间的转换

    1. 时间戳转日期字符串 var timestamp = timestampObj.time;获取时间戳的毫秒数 var d = new Date(timestamp); //根据时间戳生成的时间对象 ...

  5. IOS:兼容ios6和低版本

    viewDidUnload在ios6开始被弃用了,所以我们在这里处理内存警告的这类问题,这个时候我们就要把相应的处理放在 didReceiveMemoryWarning中. - (void)didRe ...

  6. HDU1114 - Piggy-Bank

    Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. ...

  7. [bzoj 2726] 任务安排 (斜率优化 线性dp)

    3月14日第三题!!!(虽然是15号发的qwq) Description 机器上有N个需要处理的任务,它们构成了一个序列.这些任务被标号为1到N,因此序列的排列为1,2,3-N.这N个任务被分成若干批 ...

  8. 【hiho一下第十二周】刷油漆

    [题目链接]:http://hihocoder.com/problemset/problem/1055 [题意] [题解] 设f[x][i]表示以第x个节点为根的子树; 不选x这个节点,然后子树里面选 ...

  9. 使用sdk自带工具uiautomatorviewer查看app控件属性

    双击打开即可 其只显示模拟器中的当前页面,所以需要在模拟器中打开你需要的页面,然后刷新

  10. 基本socket api

    socket函数,为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,并且指定通信协议类型. #include<sys/socket.h> int socket (int ...