当前位置: 首页 > news >正文

信誉比较好的网上做任务的网站建设通小程序

信誉比较好的网上做任务的网站,建设通小程序,wordpress搭建论坛教程,网站建设软件培训学校一、JVM 中一次完整的 GC 流程(以分代回收为例) JVM 的垃圾回收(GC)流程依赖于分代收集机制,不同区域(新生代、老年代)采用不同的回收策略。以下是典型的完整 GC 流程(以 Parallel …

一、JVM 中一次完整的 GC 流程(以分代回收为例)

JVM 的垃圾回收(GC)流程依赖于分代收集机制,不同区域(新生代、老年代)采用不同的回收策略。以下是典型的完整 GC 流程(以 Parallel Scavenge + Parallel Old 组合为例):


1. Minor GC(新生代回收)
  • 触发条件

    • 新生代(Eden 区)空间不足,无法分配新对象。

  • 流程

    1. 标记存活对象
      从 GC Roots(如线程栈、静态变量等)出发,标记所有存活对象。

    2. 复制存活对象
      将 Eden 区和当前使用的 Survivor(From 区)中的存活对象复制到另一个 Survivor(To 区),并清空 Eden 和 From 区。

    3. 年龄增长
      Survivor 区中存活对象的年龄(Age)增加 1。

    4. 晋升老年代
      若对象年龄达到阈值(默认 15),或 Survivor 区空间不足,存活对象会晋升到老年代。


2. Major GC / Full GC(老年代回收)
  • 触发条件

    • 老年代空间不足(如晋升失败)。

    • 显式调用 System.gc()(不推荐)。

    • 元数据区(Metaspace)空间不足。

  • 流程(以 Parallel Old 为例):

    1. 标记存活对象
      标记老年代中所有存活对象。

    2. 压缩整理(Compaction)
      将所有存活对象向老年代一端移动,清理碎片化空间。

    3. 更新引用
      修正所有指向被移动对象的引用地址。


二、对象晋升到老年代的条件

对象从新生代晋升到老年代的条件如下:

  1. 年龄阈值

    • 对象在 Survivor 区经历的 Minor GC 次数达到阈值(默认 -XX:MaxTenuringThreshold=15)。

  2. 动态年龄判断

    • 如果 Survivor 区中某年龄段的对象总大小超过 Survivor 区的一半,则所有大于等于该年龄的对象直接晋升。

  3. 大对象直接进入老年代

    • 若对象大小超过 -XX:PretenureSizeThreshold(默认 0,需手动设置),直接分配到老年代。

  4. Survivor 区空间不足

    • 当 Survivor 区无法容纳 Minor GC 后的存活对象时,直接晋升到老年代。


三、重要的 JVM 参数

以下是常见的 JVM 参数分类说明:


1. 堆内存相关
参数作用示例
-Xms初始堆大小-Xms512m(堆初始 512MB)
-Xmx最大堆大小-Xmx4g(堆最大 4GB)
-Xmn新生代大小-Xmn1g(新生代 1GB)
-XX:NewRatio新生代与老年代比例-XX:NewRatio=2(老年代:新生代=2:1)
-XX:SurvivorRatioEden 区与 Survivor 区比例-XX:SurvivorRatio=8(Eden:Survivor=8:1:1)

2. GC 行为控制
参数作用示例
-XX:+UseSerialGC使用串行回收器(单线程)(适合低配机器)
-XX:+UseParallelGC使用 Parallel Scavenge 回收器(默认并行回收新生代)
-XX:+UseConcMarkSweepGC使用 CMS 回收器(已废弃)(低停顿,Java 8 前常用)
-XX:+UseG1GC使用 G1 回收器(分区回收,Java 9+ 默认)
-XX:MaxTenuringThreshold对象晋升年龄阈值-XX:MaxTenuringThreshold=15
-XX:PretenureSizeThreshold大对象直接进入老年代的阈值-XX:PretenureSizeThreshold=2m

3. GC 日志与监控
参数作用示例
-XX:+PrintGCDetails打印 GC 详细信息(需配合日志分析工具)
-XX:+PrintGCDateStamps输出 GC 时间戳
-Xloggc:<path>指定 GC 日志文件路径-Xloggc:/logs/gc.log
-XX:+HeapDumpOnOutOfMemoryErrorOOM 时生成堆转储(用于分析内存泄漏)

4. 元数据区(Metaspace)
参数作用示例
-XX:MetaspaceSize初始元数据区大小-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize元数据区最大大小-XX:MaxMetaspaceSize=256m

四、示例参数配置

# 启动一个 Java 应用,配置堆大小和 G1 回收器
java -Xms2g -Xmx2g \-XX:+UseG1GC \-XX:MaxGCPauseMillis=200 \-XX:MetaspaceSize=128m \-XX:MaxMetaspaceSize=256m \-Xloggc:/logs/gc.log \-jar myapp.jar

五、总结

  • GC 流程:分代回收通过 Minor GC 和 Full GC 协作完成,新生代用复制算法,老年代用标记-清除或标记-整理算法。

  • 对象晋升:基于年龄、动态判断、空间不足等因素决定是否晋升到老年代。

  • JVM 参数:需根据应用场景(吞吐量优先或低延迟)选择回收器和调整参数,结合监控工具(如 VisualVM、GCViewer)优化配置。

http://www.dtcms.com/a/510918.html

相关文章:

  • pw域名网站商标注册查询网官网
  • 大兴建设网站设计一个商务网站
  • 比如做百度知道 .html,这些都是我们不可控制的网站!html网站设计实例代码
  • 云虚拟主机和网站建设襄州区住房和城乡建设局网站
  • 网站开发一个多少钱啊荣盛科技网站建设
  • 网站动态与静态山东省建设局网站
  • 深圳平湖网站开发网页游戏网站排名前10名
  • 淘宝二官方网站是做啥的台前网站建设公司
  • php综合网站源码张斌网站建设
  • 蓝色网站素材wordpress首页聚合模块
  • 导购类网站模板做零食网站的首页模板
  • 怀集县住房和城乡规划建设网站肇庆seo外包
  • 辽宁品牌建设促进会 网站潍坊高端网站设计
  • 网站免费申请优化设计七年级下册语文答案
  • 网站备案回访电话号码网站建设mdf
  • 网站登录页做多大尺寸的网站系统升级
  • 江西建网站镇江润州区建设局网站
  • 国际知名的论文网站重庆公司注销流程
  • 专做网页的网站可以做拟合的在线网站
  • 广东网站开发项目网页设计的基本原则
  • 北京做网站制作的公司什么视图适用于发送电子邮件和创建网页
  • 成都网站建设 3e房地产新闻最新消息今天
  • 织梦网站源码转换成wordpress厦门35网站建设公司
  • 昆明市城市基本建设档案馆网站上海网站备案需要多久
  • 网站建设与功能模块网站视频解析
  • 网站制作备案上线流程仿造网站用侵权吗
  • 网站备案人什么意思石家庄百度搜索优化
  • 番禺区网站建设满分企业网
  • 福州网站建设找嘉艺网络集团公司网站源码下载
  • iis7搭建asp网站常德百度seo