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

一些命令行参数可以用来选择垃圾收集器,指定堆或代的大小,修改垃圾收集行为,获取垃圾收集统计数据。本章给出一些最常用的参数。有关各种各样参数更多完整的列表和详细信息可以参见第九章。注意:指定的数字可以以“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. SSM 拦截器验证权限和登录与注销的实现

    拦截器的作用在于,比如我们输入 xxx.com/admin 发起请求进入 网站后台或者其他后台页面.我们的拦截器会在 Controller  调用之前进行拦截,至于什么拦截,由我们来写.比如,判断用户 ...

  2. 文字左右滚动选择,改变direction的值

    1.从左到右滚动显示<marquee direction=left>测试</marquee> 2.从右到左滚动显示<marquee direction=right> ...

  3. prevent阻止标签默认行为&stop阻止事件冒泡

    <form id="vm" v-on:submit.prevent="register"> 1.prevent是preventDefault,阻止标 ...

  4. Linux下挂载分区 (本人实例)

    设置分区开机自动挂载 要在/etc/fstab里设置一行 把上面空格去掉就行了

  5. 完全二叉树(Complete Binary Tree)

    Date:2019-03-25 19:36:45 判断一棵树是否为完全二叉树 #include <queue> using namespace std; void IsComplete(n ...

  6. 用SufaceGO加微软全家桶做个遥控车(一)

    作为一个dotnet技术的新手我是不好意思写帖子的,原因就是本人技术太水了,写出的帖子肯定会让人笑话.所以这次我是厚着脸皮写出这个帖子的,希望大佬们轻喷了.我的目标就是用SurfaceGo实现一个和我 ...

  7. Hive sql

    1.DDL操作 1.1 建表 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_ ...

  8. 用C#调用Windows API向指定窗口发送按键消息

    一.调用Windows API. C#下调用Windows API方法如下: 1.引入命名空间:using System.Runtime.InteropServices; 2.引用需要使用的方法,格式 ...

  9. Ubuntu18.04 安装 oh-my-zsh

    目录 Ubuntu18.04 安装 oh-my-zsh 目录 安装zsh 安装curl 安装oh-my-zsh 使用zsh替换bash 修改终端主题和配色 修改终端配置 隐藏用户和主机名 效果图 Ub ...

  10. 【hdu 6342】Expression in Memories

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把所有的问号都改成'1' 然后会发现只有+0?这种情况 需要把?改成+. 看看这样的0后面的1是不是由问号改过来的就好了.是的话 再 ...