跟垃圾回收相关的关键选项

说明

  • ==本文摘自【MemoryManagement-Whitepaper-1-150020.pdf】并转译,本文并不是完整的转译,部分地方有删减;==
  • ==本人水平有限,如有不正确的地方烦请指出,感激不尽。==

概述

有很多的命令行参数用来选择垃圾回收器、设置堆或代的大小、修改垃圾回收器的动作以及提供垃圾回收器的信息。这一章主要就是展示一些经常用到的命令行选项,更多详细信息请查看对应的相关文档。

==注意:对于数字的选项设置,你可以使用’k’/’K’来代表’KB’,可以使用’m’/’M’来代表’MB’,可以用’g’/’G’来代表’GB’。==

垃圾回收器的选择

命令行选项 选择的垃圾回收器
-XX:+UseSerialGC 串行
-XX:+UseParallelGC 并行
-XX:+UseParallelOldGC 并行压缩
-XX:+UseConcMarkSweepGC 并行标记清理(CMS)

垃圾回收器的信息

命令行选项 描述
-XX:+PrintGC 输出每次垃圾回收的基本信息
-XX:+PrintGCDetails 输出每次垃圾回收的相信信息
-XX:+PrintGCTimeStamps 输出每次开始垃圾回收事件的时间戳,使用’-XX:+PrintGC’或’-XX:+PrintGCDetails’来配合使用

堆和代的大小

==下表中,最后位的’n’表示需要设置的数值,’-Xmsn’,’n’就是需要设置的具体数值。==

命令行选项 默认值 描述
-Xmsn 查看前面章节 设置堆的初始大小,默认单位是字节
-Xmxn 查看前面章节 设置堆的最大值,默认单位是字节
-XX:MinHeapFreeRatio=minimum 和 -XX:MaxHeapFreeRatio=maximum 40(最小),70(最大) 堆的空闲空间的目标范围,这些是应用在每个代中。例如,如果min是30,那么每个代的空闲空间比例都必须降到30%,代的空间会拓展以保持30%的空闲空间,显而易见,max是60的话,那么代的空闲空间最大只能是60%
-XX:NewSize=n 跟平台有关 年轻代(新生代)的初始空间
-XX:NewRatio=n client模式:2,server模式:8 年轻代和老年代的比例。例如,n=3,那么比例就是1:3,那么Eden和Survivor的空间就是年轻代和老年代的四分之一
-XX:SurvivorRatio=n 32 每个survivor和Eden的空间比例。例如,如果n=7,每个survivor就是年轻代的九分之一(不是八分之一,因为有两个survivor区)
-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数量 设置年轻代并行回收和部分老年代并行回收的垃圾回收器的线程数量

猜你喜欢

转载自blog.csdn.net/Android_app/article/details/77572135
今日推荐