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

手机网站可以做动态吗公司怎么注册企业邮箱

手机网站可以做动态吗,公司怎么注册企业邮箱,安阳县天气预报,iis网站在点默认文档的时候报错.ZGC#xff08;Z Garbage Collector#xff09;是Java平台上的一种垃圾收集器#xff0c;它是由Oracle开发的#xff0c;旨在解决大堆的低延迟垃圾收集问题。ZGC是一种并发的分代垃圾收集器#xff0c;它主要针对具有大内存需求和低停顿时间要求的应用程序 分代ZGC收集器…ZGCZ Garbage Collector是Java平台上的一种垃圾收集器它是由Oracle开发的旨在解决大堆的低延迟垃圾收集问题。ZGC是一种并发的分代垃圾收集器它主要针对具有大内存需求和低停顿时间要求的应用程序 分代ZGC收集器具备以下特性 没有多重映射内存内存屏障优化双重缓冲记忆集无需额外堆内存重分配堆区域密度大对象处理 核心概念 染色指针 染色指针是指向堆中对象的指针该对象与对象的内存地址一起包含对对象的已知状态进行编码的元数据。元数据描述了对象是否已知是活动的、地址是否正确等等。 在分代 ZGC 中存储在对象字段中的对象引用被实现为染色指针。然而存储在 JVM 堆栈中的对象引用在硬件堆栈或 CPU 寄存器中实现为无色指针没有元数据位。读屏障和存储屏障控制染色指针和无色指针之间的转换。 由于染色指针永远不会出现在硬件堆栈或 CPU 寄存器中因此只要可以有效地完成染色指针和无色指针之间的转换就可以使用更奇特的染色指针布局 Generational ZGC 使用的染色指针布局将元数据放在指针的低位中将对象地址放在高位中这最大限度地减少了负载屏障中的机器指令数量。通过仔细编码内存地址和元数据位单个移位指令在 x64上既可以检查指针是否需要处理也可以删除元数据位。 GC 阶段标记 非分代 ZGC 判断指针处于哪一个GC阶段很简单只需要简单的位移 movq rax, 0x10(rbx) testq rax, 0x20(r15) jnz slow_pathtestq即等价于操作是一般的 bitflag 做法 分代 ZGC 的代码是这样的 movq rax, 0x10(rbx) shrq rax, $address_shift ja slow_pathshrq 是右移操作同时会设置 Carry Flag 为最后移除的一位同时如果右移的结果为 0Zero Flag 也会被设为 0。 ja是 jump if above 指令仅在CF 0 ZF 0时跳转 该指令的操作过程可以见下图 每次加载均会将地址右移同时由于 8 字节对齐JVM 保证了最低三位的值一定为 0因此若该指针被更新最后被移除的位值为 1则会跳入 slow path 分支处理下一个 GC 阶段 最大堆大小 对于64位系统ZGC支持最大堆大小JDK11(4TB) - JDK15(16TB) - JDK21(16TB) 在64位的Linux操作系统中高18位或称为高16TB是由内核保留的在用户空间是无法直接寻址的。JDK15中使用了其中两位作为标志位 HotSpot虚拟机的标记实现方案 Serial: 标记记录在对象头上G1/Shenandoah: 标记记录在与对象相互独立的数据结构(BitMap)上ZGC: 标记信息记在引用对象的指针上 多重映射内存 分代ZGC不再使用多重映射内存 内存多重映射Multi-Mapping将多个不同的虚拟内存地址映射到同一个物理内存地址上是一种多对一映射 内存屏障 由于分代 ZGC 的元数据比较多使用多重映射内存的方法不再能行得通。因此在寄存器和栈中的内存地址需要为普通的无色指针。分代 ZGC 不再能通过此减少加载或存储内存屏障的开销需要在有色和无色指针之间转换即 加载屏障: 在加载时移除元数据存储屏障: 在存储时恢复元数据 用于优化屏障的一些技术是 快路径和慢路径最小化加载屏障职责记忆集屏障SATB 标记屏障混合存储屏障检查存储屏障缓冲区屏障修补 快路径和慢路径 快路径检测是否需要额外的 GC 工作当需要时会跳转进入慢路径开始相关工作。快路径由 JIT 实现会直接插入 GC 代码至 JIT 编译后的程序。而慢路径不经常调用所以使用 C 实现 最小化加载屏障职责 分代 ZGC 中我们需要监控年轻代和老年代并且在有色指针和无色指针间转换。为了简化加载屏障的复杂性并引入优化加载屏障的空间标记的职责交给了加载屏障 在分代 ZGC 中加载屏障负责 转换有色指针为无色指针更新已被 GC 更新的过时指针 存储屏障负责 转换无色指针为有色指针维护记忆集标记对象存活 记忆集和 SATB 记忆集和SATB的概念与G1中一致详细可见G1 垃圾收集器详解 存储屏障缓冲区 将障碍分为快速路径和慢速路径并使用指针着色可以减少对 C 慢速路径函数的调用次数。 分代 ZGC 通过在快速路径和慢速路径之间放置 JIT 编译的中间路径来进一步减少开销。中间路径将要覆盖的值和对象字段的地址存储在存储屏障缓冲区中并返回到已编译的应用程序代码而不需要采取昂贵的慢速路径。仅当存储屏障缓冲区已满时才采用慢速路径。这可以分摊从编译的应用程序代码转换到 C 慢路径代码的一些开销 双重缓冲记忆集 ZGC 的记忆集不使用卡表实现而是由两个 bitmap 实现。一个 bitmap 用于用户线程在加载屏障中修改另一个只读的 bitmap 用于 GC。这样做有两个好处 用户线程无需等待 bitmap 被清除因为分了两个 bitmap所以不需要额外的内存屏障造成额外的内存开销 无需多余堆空间的重分配 其他 HotSpot GC 中的年轻代回收使用清理模型GC 一次性找到存活对象并重分配。在 GC 完全了解哪些对象还活着之前年轻代中的所有对象都必须重分配在这之后才能回收内存。因此这些 GC 需要猜测存活对象所需的内存量并确保在 GC 启动时该内存量可用。如果猜错了则需要更昂贵的清理操作例如就地固定未重分配的对象这会导致内存碎片或者 Full GC。 分代 ZGC 有两个阶段 访问并标记所有可达对象重分配标记的对象 由于 GC 在重分配之前就知道对象是否存活因此可以按区域粒度划分工作。一旦存活对象都被重分配出某个区域即该区域已被清除该区域就被当作新的目标区域继续用于重分配或被应用使用。即使没有额外的堆空间ZGC 仍可通过将压缩对象到当前区域来继续重分配。这使得分代 ZGC 能够重分配并压缩年轻代而无需使用额外的堆内存 堆区域密度 如果一个区域的存活对象很多将它们一个个移到老年代堆的操作是不值得的。ZGC 会分析年轻代存活对象的密度以此为一句来判断是否有机会就地升级为老年代。否则这个区域会保留为年轻代 大对象处理 ZGC 已经可以很好地处理大型对象。通过将虚拟内存与物理内存解耦并提前保留虚拟内存大对象的碎片问题通常可以避免 在分代 ZGC 中允许在年轻代中分配大对象。鉴于该区域现在可以在不重分配的情况下老化因此不再需要在老一代中分配大对象。相反如果大对象寿命较短则可以在年轻代中收集它们如果寿命较长则可以廉价地将它们提升到老年代。 ZGC JVM参数 ZGC 通用参数 参数描述默认值-XX:MinHeapSize, -Xms最小堆大小8M-XX:InitialHeapSize, -Xms初始化堆大小128M-XX:MaxHeapSize, -Xmx最大堆大小2036M-XX:SoftMaxHeapSizeJVM堆的最大软限制2036M-XX:ConcGCThreads并发GC的线程数量1-XX:ParallelGCThreads设置垃圾回收时的并行GC线程数量4-XX:UseLargePages使用大页面内存false-XX:UseTransparentHugePages使用Transparent大页面内存-XX:UseNUMA使用UNMA内存分配可以获得更好的性能-XX:SoftRefLRUPolicyMSPerMB每MB的空闲内存空间允许软引用对象存活时间1000-XX:AllocateHeapAt堆分配参数可以使用非DRAM 内存 ZGC 特有参数 参数描述默认值-XX:ZAllocationSpikeTolerance修正系数数值越大越早触发GC2.000000-XX:ZCollectionIntervalZGC发生的最小时间间隔单位秒0.000000-XX:ZFragmentationLimitrelocation时当前region碎片化大于此值则回收region25.000000-XX:ZMarkStackSpaceLimit指定为标记堆栈分配的最大字节数8096M-XX:ZProactive是否启用主动回收true-XX:ZUncommit是否归还不使用的内存给OStrue-XX:ZUncommitDelay不再使用的内存最多延迟多久会归还给OS300s ZGC 诊断选项 通过-XX:UnlockDiagnosticVMOptions开启诊断选项 参数描述-XX:UnlockDiagnosticVMOptions使用诊断模式下面的参数才会起作用-XX:ZStatisticsInterval指定统计数据输出之间的时间间隔秒-XX:ZVerifyForwarding检验转发表-XX:ZVerifyMarking检验标记集-XX:ZVerifyObjects检验对象-XX:ZVerifyRoots检验根节点-XX:ZVerifyViews检验堆视图访问 分代ZGC 特有参数 参数描述-XX:ZCollectionIntervalMinorZGC进行年轻代垃圾收集(MinorGC)的时间间隔秒-XX:ZCollectionIntervalMajorZGC进行老年代垃圾收集(MajorGC)的时间间隔秒-XX:ZYoungCompactionLimit控制ZGC何时进行年轻代的压缩操作 参考资料 深入理解Java虚拟机第三版JEP 439: Generational ZGCJEP 377: ZGC: A Scalable Low-Latency Garbage Collector (Production)理解并应用JVM垃圾收集器-ZGC分代ZGCG1 垃圾收集器详解JDK17ZGC初体验得物技术
http://www.tj-hxxt.cn/news/142893.html

相关文章:

  • 重要的龙岗网站建设免费行情网站app页面
  • 建设工程查询网站网站开发 实名认证需要备案吗
  • 购买域名网站企业信息系统规划
  • 做标书要不要做网站长沙网站提升排名
  • 营销型网站审定标准黔东南住房和城乡建设官网
  • 商城网站系统建设怎样申请网站
  • 泉州网站开发网站建设程序开发
  • 二手交易网站建设内容策划推荐邵阳网站建设
  • 高端网站建设公司怎么选重庆建设医院网站
  • 建设手机网站优化方案丛书官网
  • 用织梦做的网站怎么管理攻略网站的建设
  • 网站图片 原则制作公司网页要多长时间
  • 网站后台地址修改中国电信收购腾讯
  • 淮安住房和城乡建设厅网站南京4a广告公司
  • 罗岗网站建设公司制作人iu
  • 通过ip直连打开网站要怎么做即墨市网站建设
  • 吉林网站制作咸阳做网站公司
  • 哪里有网站开发培训学校网站首页
  • 河南省建设监理协会网站人才十php网站开发实
  • 做网站怎样赚钱政务网站建设与管理整
  • 0基础学网站建设软件开发公司的优势
  • 网站优化垂直化好还是扁平化好郑州关键词排名顾问
  • 朔州网站建设价格低广州品牌网站制作公司
  • 网站开发要多长时间百度搜索提交入口
  • 备案个人网站做淘宝客网站优化网站建设
  • 适应 分辨率 网站网站制作明细报价表
  • 山东网站制作软件移动端网站构成要素
  • 张店网站建设价域名不备案能用吗
  • 天津七七一网站建设有限公司怎么样做图片网站会被
  • 网站建设最关键的两个素材外贸推广的几种方式以及效果排行