哈尔滨建设网站公司吗/seo门户网站建设方案

哈尔滨建设网站公司吗,seo门户网站建设方案,宁波网站设计相信荣胜网络,电脑系统做的好的网站好GC Roots 枚举需要遍历整个应用程序的上下文,而在进行可达性分析或者垃圾回收时,如果我们还是进行全堆扫描及收集,那么会非常耗时。JVM 将堆分为新生代及老生代,它们的回收频率及算法不一样。 1 回收算法 在进行可达性分析时&am…

GC Roots 枚举需要遍历整个应用程序的上下文,而在进行可达性分析或者垃圾回收时,如果我们还是进行全堆扫描及收集,那么会非常耗时。JVM 将堆分为新生代及老生代,它们的回收频率及算法不一样。

1 回收算法

在进行可达性分析时,我们会对对象进行标记:存活及待回收。然后再进行回收。

标记-清除

统一回收所有被标记为“待回收”的对象。

缺陷:1)执行效率不稳定,如果大部分对象需要回收,那清除工作将增加。2)内存空间碎片化,会产生大量不连续的内存碎片。

标记-复制

半区复制,将空间平分为2,每次只用其中1块,每次回收时将存活的对象复制到另一块,将当前块一次性清理掉。

缺陷:1)如果大部分对象是存活的,就会产生很大的内存复制开销。2)可用内存缩小到原来一半,内存利用率不高。

标记-整理

让所有存活的对象都向内存空间一端移动,然后直接清理掉边界以外的内存。

缺陷:如果存活对象分布比较分散,那么移动对象将很耗时。

表 回收算法

“标记-清除”因为“碎片问题”在虚拟机中较少使用,“碎片问题”会带来垃圾回收频繁、大型数据无法存储等问题。

1.1 分代收集

弱分代假说:绝大多数对象都是朝生夕灭。

强分代假说:熬过越多次垃圾收集的对象就越难以消亡。

JVM 按照对象年龄(熬过垃圾收集过程的次数,默认15次)将堆划分为新生代与老生代。

新生代

依据弱分代假说,每次回收只关注如何保留少部分存活的对象。

算法:标记-复制

老生代

依据强分代假说,以较低频率回收这个区域。

算法:标记-整理

表 新生代与老生代

1.1.1 新生代 Appel 式垃圾回收

将新生代划分为三块空间:Eden、Servivor1、Servivor2,内存大小比例为8:1:1。

每次只使用Eden和一块Servivor,垃圾回收时,将它们当作还存活的对象一次性复制到另一块Servivor中,然后清理掉使用的Eden及Servivor块。

PS:回收时,如果Eden及Servivor存活下来的对象超过Servivor容量时,会将溢出的对象复制到老生代。

1.1.2 晋升到老生代

晋升到老生代有如下场景:

  1. 对象年龄达到阈值。
  2. 大对象(大小超过设定的阈值)直接分配至老生代。避免大对象在新生代频繁复制。
  3. 老生代空间担保失败,Minor GC完成后存活的对象大小超过一块Servivor的值。
  4. 动态年龄判定,如果年龄小等于X的对象总大小超过Servivor容量的50%,则所有年龄>=X的对象直接晋升。

1.1.3 Minor GC 与 Full GC

纬度

Minor GC

Full GC

作用区域

新生代

整个堆(新生代+老生代)+方法区

触发

频率高。

当Eden区空间不足时触发。

(并非每次Eden满都触发,若开启空间分配担保,则可能直接触发Full GC)。

频率低。

  1. 老生代空间不足。
  2. 方法区空间不足。
  3. 显式调用:System.gc()
  4. 空间分配担保失败。

算法

标记-复制

标记-整理/标记-清除

表 Minor GC 与Full GC的对比

1.2 跨代引用

新生代的对象可能被老生代引用。Minor GC时,进行可达性分析前还需要将引用了新生代对象的老生代对象加入到GC Roots中。

跨代引用假说:跨代引用相对于同代引用来说仅占少数。

1.2.1 卡表

为了能快速收集到引用了新生代的老生代对象,在新生代上建立一个全局的“记忆集”,来记录老生代中跨代引用的信息。

“卡表”是记忆集的一种实现,是一个字节类型的数组。数组中每个元素对应老生代中一块固定大小的内存区域。该区域称为卡页(默认512字节)。当卡页中有对象存在跨代引用时,卡表对应数组的元素值为1,否则为0。

1.2.2 卡表的“伪共享”

“伪共享”是一种性能问题。

操作系统中内存与缓存的取值最小单位是缓存行(64字节),多线程并发的场景下,不同线程对不同卡表项修改可能操作的是同一缓存行,从而引发频繁的缓存同步,降低性能。

优化方案:

  1. 在标记卡表前,如果该条目未被标记,才能进行标记。(减少不必要的写操作)
  2. 卡表稀疏化,调整卡表条目粒度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯 之 数论

文章目录 习题质数找素数 数论,就是一些数学问题,蓝桥杯十分喜欢考察,常见的数论的问题有:取模,同余,大整数分解,素数,质因数,最大公约数,最小公倍数等等 素…

Beans模块之工厂模块注解模块@Qualifier

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

C# HTTP 文件上传、下载服务器

程序需要管理员权限,vs需要管理员打开 首次运行需要执行以下命令注册URL(管理员命令行) netsh advfirewall firewall add rule name"FileShare" dirin actionallow protocolTCP localport8000 ipconfig | findstr "IPv4&quo…

FPGA中串行执行方式之计数器控制

FPGA中串行执行方式之计数器控制 使用计数器控制的方式实现状态机是一种简单且直观的方法。它通过计数器的值来控制状态的变化,从而实现顺序逻辑。计数器的方式特别适合状态较少且状态转移是固定的场景。 基本原理 计数器控制的状态机 ​例程1:简单的顺序状态机 以下是一个…

纯vue手写流程组件

前言 网上有很多的vue的流程组件,但是本人不喜欢很多冗余的代码,喜欢动手敲代码;刚开始写的时候,确实没法下笔,最后一层一层剥离,总算实现了;大家可以参考我写的代码,可以拿过去定制…

数字化转型驱动卫生用品安全革新

当315晚会上晃动的暗访镜头揭露卫生巾生产车间里漂浮的异物、纸尿裤原料仓中霉变的碎屑时,这一触目惊心的场景无情地撕开了“贴身安全”的遮羞布,暴露的不仅是部分企业的道德缺失,更凸显了当前检测与监管体系的漏洞,为整个行业敲响…

【JavaWeb学习Day27】

Tlias前端 员工管理 条件分页查询&#xff1a; 页面布局 搜索栏&#xff1a; <!-- 搜索栏 --><div class"container"><el-form :inline"true" :model"searchEmp" class"demo-form-inline"><el-form-item label…

Python进阶教程丨lambda函数

1. lambda函数是什么&#xff1f; 在 Python 里&#xff0c;lambda 函数是一种特殊类型的函数&#xff0c;也被叫做匿名函数。匿名”意味着它不需要像常规函数那样使用 def 来进行命名。lambda lambda 函数本质上是简洁的临时函数 &#xff0c;它适用于只需要简单逻辑的场景&a…

苹果HFS+56TB存储MOV文件出错的恢复方法

HFS文件系统是Apple电脑中默认的最常见的文件系统。HFS来源于UNIX&#xff0c;优势就是稳定性&#xff0c;另外HFS是支持日志功能的&#xff0c;所以很多存储设备也采用了HFS文件系统。再稳定的文件系统也有“马失前蹄”的时候&#xff0c;下面就来聊下HFS出现文件出错、丢失时…

电源电路篇

电源电路篇 一、LDO-Low Dropout Regulator(低压差线性稳压器)1.1 AMS1117-3.3V芯片 二、DCDC-Direct Current to Direct Current(开关稳压器)2.1 降压(Buck)电路2.1.1 TPS5450-5V芯片 一、LDO-Low Dropout Regulator(低压差线性稳压器) LDO是一种线性稳压器&#xff0c;用于提…

java项目之在线购物系统(源码+文档)

项目简介 在线购物系统实现了以下功能&#xff1a; 使用在线购物系统的用户分管理员和用户两个角色的权限子模块。 管理员所能使用的功能主要有&#xff1a;主页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等。 用户可以实现主页、个人中心、我的…

go语言中空结构体

空结构体(struct{}) 普通理解 在结构体中&#xff0c;可以包裹一系列与对象相关的属性&#xff0c;但若该对象没有属性呢&#xff1f;那它就是一个空结构体。 空结构体&#xff0c;和正常的结构体一样&#xff0c;可以接收方法函数。 type Lamp struct{}func (l Lamp) On()…

Unity实现连连看连线效果

1.一个比较简单的向量计算&#xff0c;用的LineRenderer实现&#xff1b; 已知起始A点和终点C点&#xff0c;求B点&#xff1b; 先计算A点到C点的向量取归一化当做方向&#xff0c;再给定一个“模长”&#xff08;B点到A点的模长&#xff09;乘以该方向&#xff0c;最后加上L…

【MySQL】触发器与存储引擎

目录 触发器基本概念触发器操作创建触发器NEW 与 OLD查看触发器删除触发器 注意事项 存储引擎基本概念基本操作查询当前数据库支持的存储引擎查看当前的默认存储引擎查看某个表用的存储引擎创建表时指定存储引擎修改表的存储引擎 触发器 基本概念 概述&#xff1a; 触发器&a…

能“嘎嘎提升”提升用户居住体验的智能家居物联网框架推荐!

智能家居在日常生活中给我们的带来了更多的便利&#xff0c;更让有些用户切实地体会到了科技的魅力&#xff0c;对于想要打造属于自己的智能家居氛围感的用户们&#xff0c;以下是一些能够帮助提升居住体验的智能家居物联网框架及应用&#xff1a; 1. 涂鸦智能&#xff08;Tuy…

DevEco Studio的使用

目录 1.创建ArkTS工程 2.ArkTS工程目录结构&#xff08;Stage模型&#xff09; 构建第一个页面 构建第二个页面 实现页面间的跳转 1.创建ArkTS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择…

性能监控——vmstat

性能监控——vmstat ​ 性能监控是对 IT 系统运行效率和有效性的系统观察和测量。它涉及收集、分析和报告各种组件&#xff08;包括应用程序、网络、服务器和数据库&#xff09;的关键性能指标 (KPI)。此过程使用专门的工具来跟踪响应时间、吞吐量、资源利用率和错误率等指标。…

图像分割的mask有空洞怎么修补

分享一个对实例分割mask修补的方法&#xff0c;希望对大家有所帮助。 1. 这是我准备分割的图片 2 分割结果 可以看到衣服部分有一些没分割出来&#xff0c;二值化图片能清晰看到衣服部分有些黑色未分出的地方。 3 补全mask区域 import cv2 import numpy as npdef fill_mask_h…

Qt 控件概述 QLabel

目录 QLabel显示类控件 label如何做到与窗口同步变化 边框 Frame QLabel显示类控件 ​​ ​​ textFormat &#xff1a;设置文件格式 ​ Pixmap &#xff1a;标签图片 label如何做到与窗口同步变化 Qt中对应用户的操作 &#xff1a; 事件和信号 拖拽窗口大小就会触发…

git 命令回退版本

1、查看提交记录 git log --oneline # 简化的提交历史&#xff08;推荐&#xff09; # 或 git log # 完整提交历史2、版本回退 git reset --hard <commit-hash>3、如果已推送过代码到远程仓库&#xff0c;需强制推送更新 git push -f