本文档针对JDK8 HotSpot虚拟机,纯人工翻译,在力求准确表达官方文档原义的基础之上,会适当意译,不至于让译文显得太晦涩难懂。

小至桌面applet大至大型服务器上的web服务,各种应用都有在使用Java SE,为了支持这种多样化的部署,Java HotSpot VM提供了多种垃圾收集器,旨在满足不同的需求。这是能既满足大型应用需求也满足小型应用需求的重要原因之一。Java SE基于运行应用的机器的类别选择最合适的垃圾收集器。但是,这种选择可能并非对每个应用都是最佳的。 对性能目前有严格要求或有其他要求的用户、开发人员和管理员可能需要显式选择垃圾回收器并调整某些参数以实现期望的性能水平。本文档提供了有助于完成这些任务的信息。首先,在串行、stop-the-world 的上下文中描述了垃圾收集器的一般功能和基本调节选项。然后介绍其他收集器的特定功能以及选择收集器时要考虑的因素。

垃圾收集器(GC)是一种内存管理工具。它通过以下操作实现自动内存管理:

  1. 将对象分配给年轻代,并将老的对象提升到老年代。
  2. 通过并发(并行)标记阶段在老年代中找到存活对象。JVM在整个堆占用量超过默认阈值时触发标记阶段。请参阅CMS收集器和G1收集器章节。
  3. 通过并行复制压缩存活对象来恢复可用内存。请参阅并行收集器和G1收集器章节。

何时垃圾收集器的选择很重要?对于有些应用,答案是never。即那些在GC的暂停频率和持续时间都适度的情况下运行良好的应用。然而,对于大多数应用程序却不是这种情况,尤其是那些具有大量数据(多个GB),多线程和高事务率的应用程序。

Amdahl定律(给定问题中的并行加速比受问题的同步部分限制)意味着大多数工作负载无法完美并行化;某些部分始终是顺序的,不能从并行中受益。Java平台也是如此。尤其是,Java SE 1.4之前的Oracle 虚拟机不支持并行垃圾收集,因此,垃圾收集对多处理器系统的影响相对于其他并行应用而言更大。

图1-1“比较垃圾收集所花费的时间占比”建模了一个理想的系统,该系统除了垃圾收集(GC)之外,具有完美的可伸缩性。红线表示应用在单处理器系统上仅花费1%的时间进行垃圾回收。在具有32个处理器的系统上,这意味着吞吐量损失超过20%。洋红线显示,应用花费了10%的时间用于垃圾回收(对于单处理器应用来说并不算多),当扩展到32个处理器时,将损失超过75%的吞吐量。

图1-1 比较垃圾收集所花费的时间占比

"图1-1 比较垃圾收集所花费的时间占比"的描述

这表明,在小型系统上开发时可以忽略的速度问题可能会在扩展到大型系统时成为主要瓶颈。但是,在减小这种瓶颈方面进行小的改进可以在性能上获得很大的收益。对于一个足够大的系统,选择正确的垃圾收集器并在需要时进行调整是很值得的。

串行收集器通常适合大多数“小型”应用程序(堆内存需要100MB左右)。其他收集器具有额外的开销或复杂性,这也是特殊行为的代价。如果应用不需要其他可选的收集器的特殊行为,请使用串行收集器。一种不希望串行收集器成为最佳选择的情况是大型,线程密集的应用程序,这些应用程序运行在具有大量内存、两个以上处理器的机器上。当应用运行在此类服务器上时,默认会选择并行收集器,请参见“ 人机工程学(自适应调优) ”章节。

本文档是使用在Solaris操作系统(SPARC Platform Edition)上的Java SE 8作为参考而开发的。但是,本文档介绍的概念和建议适用于所有受支持的平台,包括Linux,Microsoft Windows,Solaris操作系统(x64平台版)和OS X。此外,本文档中的命令行选项在所有支持的平台上都可用,但是某些选项的默认值在不同的平台上可能有所不同。

JavaSE HotSpot VM 8 垃圾收集调优指南-介绍(2)相关推荐

  1. Java 14 Hotspot 虚拟机垃圾回收调优指南!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 大鹏123 来源 | www.cnblogs. ...

  2. java 指定垃g1圾收集_【译】Java 14 Hotspot 虚拟机垃圾回收调优指南

    本文主要包括以下内容:优化目标与策略(Ergonomics) 垃圾收集器实现(Garbage Collector Implementation) 影响垃圾收集性能的因素总堆(Total Heap) 年 ...

  3. HotSpot虚拟机GC调优指南

    原文:https://docs.oracle.com/javase/9/gctuning/JSGCT.pdf 1简介 从桌面小程序applet到大型服务器上的Web服务,有各种各样的应用程序在使用Ja ...

  4. Docker中应用的性能调优指南(一)- 先谈谈容器化性能调优

    摘要: 前言 性能调优是一个老生常谈的话题,通常情况下,一个应用在上线之前会进行容量规划.压力测试并进行验证,而性能调优则是在容量规划与验证结果之间出现差异时会进行的必然手段.从某种角度来讲,性能调优 ...

  5. 软件性能测试完整指南,软件性能测试与调优指南.pdf

    软件性能测试与调优指南 软件性能测试与调优指南 Page 1 of 36 版本信息 名称 编 号 1.0 拟 制 版本号 初稿 审 核 软件性能测试与调优指南 密 级 普通 共38页 批 准 更改信息 ...

  6. Hadoop数据库性能调优指南

    Hadoop数据库性能调优指南 作为谷歌云计算基础架构的模仿实现,Hadoop堪称业界最经典的开源云计算平台软件. 详细解读 和小伙伴们一起来吐槽

  7. 国产数据库清单;微盟《生产环境和数据恢复》;TiDB招聘;Oracle备份还原指南、GaussDB性能调优指南……墨天轮数据库周刊-第5期

    热门资讯 1.国产数据库清单(2020年第1季度)发布! modb.pro/db/22488 [摘要]本文统计了国产数据库产品清单,共58个产品仅供参考,同时在清单下方简单整理了各产品的基本介绍.应用 ...

  8. GPU性能优化之CUDA调优指南

    GPU性能优化之CUDA调优指南 GPU性能优化之CUDA调优指南 1 整体性能优化策略 2 最大化利用率 2.1 应用程序层次 2.2 设备层次 2.3 多处理器层次 2.3.1 占用率计算 3 最 ...

  9. Android系统性能调优工具介绍

    经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优工具介绍 在软件开发过程中,想必很多读者都遇到过系统性能问题.而解决系统性能问题的几个主要步骤是: 测评 ...

最新文章

  1. Drug Target Review | 虚拟现实(VR)用于新药设计
  2. (转) 6 ways of mean-centering data in R
  3. Egret里用矢量挖圆形的洞
  4. python基础代码事例-python基础代码大全
  5. Kafka Unsupported major.minor version 52.0
  6. liunx宝塔配置https_宝塔面板安装教程
  7. django-模板的母版与子版
  8. 蓝桥杯2015年第六届C/C++B组省赛第八题-移动距离
  9. IT 人的国庆大阅兵,太好好好好好好看了吧 ……
  10. An invalid domain [] was specified for this cookie问题解决
  11. 前缀后缀表达式 表达式X=A+B*(C-D)/E+F的后缀表示形式可以为( )
  12. 将字体变成红色加粗字体
  13. 【微信公众号】获取获取微信的access_token
  14. EXCEL工资表一键转化工资条短信如何操作
  15. android锁屏时间大小,Android 4.4.4 锁屏界面时间大小修改
  16. 高速ad指标分析 matlab,高速ADC的动态性能参数和基于DSP技术的测试方法研究
  17. 案例分享——智能手表(全套解决方案:生理监测、久坐提醒、来电提醒、OTA、无线通信、语音播报、长时间待机等)
  18. Java操作Access数据库使用方法及案例 及 所需jar包【源码及jar包在最后下载】
  19. 骗子QQ 14258588665 买ig骗我2600
  20. 华为网络设备维护手册

热门文章

  1. opencv在大图片上贴小图
  2. AD PCB设计入门总结(一)
  3. 厉害了!使用Elastic的有监督机器学习进行二元分类
  4. php 图片压缩旋转,移动端图片上传旋转、压缩问题的解决方案
  5. web 页面接入局域网监控视频
  6. Echarts给折线图给横竖坐标轴添加箭头与标签文字过长显示不全处理
  7. 统计数字问题_统计问题
  8. windows installer正准备安装
  9. adb: failed to install app-debug.apk: Failure [INSTALL_FAILED_ABORTED: User rejected permissions]
  10. 如何区分电脑上的硬件和软件?