黑马JVM总结(十八)
(1)G1_FullGC的概念辨析
SerialGC:串行的,ParallelGC:并行的 ,CMS和G1都是并发的
这几种垃圾回收器的新生代回收机制时相同的,SerialGC和ParalledGC:老年代内存不足触发的叫FullGC
CMS和G1老年代的内存不足分两种情况,以G1垃圾回收器为例:它本来是没有Full GC的,但是:
G1垃圾回收器内存不足时有一个阈值,当你的老年代内存跟整个堆内存占比达到45%以上的时候 触发并发标记阶段和混合收集的阶段,这两个阶段,当你的回收速度高于新的用户线程产生的垃圾的时候,回收的速度快于产生的垃圾速度的时候,这个时候还不叫Full GC还出于并发垃圾收集阶段
当垃圾的回收速度跟不上垃圾的产生速度的时候,这个时候并发收集就是失败了,就会退化为串行的收集,这个时候就叫Full GC了,并发失败了就叫Full GC,可以在GC日志里面查看是否有Full GC 字样
(2)G1_新生代_跨代引用
新生代垃圾回首先找到根对象,根对象可达性分析,找存活的对象,存活对象进行一个复制到幸存区,有一个问题根对象有一部分来自老年代的老年代存活对象非常的多,如果我们去遍历整个老年代去找根对象效率也是非常的低的,采用的是一种卡表的技术,把老年的技术再进行一个细分,分成一个个Cart,每个大约512k,如果有一个对象引用了新生代的对象,那么对应的Cart标记为脏Card,这样的好处是将来我们不用去找整个老年代了,只需要关注哪些脏Cart的对象了,脏Cart的区域减少搜索范围提高效率
新生代这边会有一个Rememberd Set可以记录对外部对我的引用,记录有哪些脏Cart,将来对新生代做垃圾回收的时候通过Remembered Set知道有哪些脏Cart,然后再到这个脏Cart区域遍历这些Root对象
标记脏Cart需要通过post-write barrier写屏障当每次对象发生变更时去更新这个脏Cart,是一个异步操作,可能不会立刻更新 ,会把更新的指令放到脏Cart的一个队列当中:dirty cart queue,将来由一个线程完成脏Cart的更新操作
(3)G1_remark
下面学习重标记的知识:
在CMS和G1垃圾回收器的时候有这么两个阶段,并发标记跟重新标记阶段
下面是并发标记阶段时的对象的一个处理状态,黑色的表示已经处理完成的,有引用子在引用它的,黑的的表示在结束时被保留下来,存活下来的对象
灰色:正在处理当中的
白色:尚未处理的
灰色的如果有人在强引用它将来会变为黑色的,后面的那个白色最后也会变成黑色存下来,上面的白色没有引用将来还是白色
垃圾结束时会根据黑白状态来区分应该存活还是应该当成垃圾
下面当处理到B,发现有强引用把它变为黑色:
处理到C,并发表标记,此时有用户的线程对这个对象的引用做一个修改比如把这个引用断了,当处理完B处理C,发现它的引用已经断了,处理到C的时候说C是白色的
还有另外一种情况可能当C被处理完以后并发标记没有结束,用户线程改变了C的引用地址把C对象作为A对象的一个属性做一个赋值操作
因为A处理完了,此时如果把C回收掉,是不行的因为有强引用它,需要做进一步检查重标记
当这个对象的引用发生改变时,JVM会给他加入一个写屏障,会把C加入一个队列,把C变为一个灰色,表示还没有处理完
当整个并发标记结束了,进入重新标记阶段重新标记阶段会Stop the World,重新标记的线程从队列中把一个个取出来,发现有强引用引用着它把它变为黑色这样呢不会被错误当错垃圾回收掉
(4)G1_字符串去重
下面介绍G1垃圾回收器的优化,介绍的是jdk8-jdk9的优化
跟String.intern()不一样,它关注的是char数组,而String.intern()关注的是字符串对象,是让字符串本身不重复,用的是StringTable来去重
(5)G1_类卸载
jdk之前的版本中,类是没有办法卸载的,只要加载后会一直占用内存 尤其自定义的类加载器, 创建和加载类使用一段时间后就没有人再用了,这个时候还占用的内存对垃圾回收时不利的,从jdk8u40后
类卸载的条件比较苛刻,类的实例都被回收掉了,类所在的类加载器其中的所有类也不再使用了,就会把所有类卸载掉
对很多框架来说都是用了自定义的类加载器,这种情况还是会发生的
JDK的类加载器他们加载的类一般不会卸载,比如启动类加载器,扩展类加载器,应用程序类加载器他们使用都是会存在的,不会被卸载
(6)G1_巨型对象
G1垃圾回收器的区划分伊甸园区,幸存区,老年代区,还有一种巨型对象区
巨型对象的回收时是不会对对象进行拷贝,回收时会优先回收
(7)G1_动态调整阈值
在现在的G1垃圾回收器老年代即使是Full GC也变成了多线程
Full GC是影响效率,可以减少Full GC的几率:通过上面参数设定
当老年代跟堆内存占比超过阈值时,并发得垃圾回收就开始了阈值默认是45% jdk9以后把这个固定了 就不太好了定义的大了容易产生Full GC,定义的下了,频繁的进行并发标记和混合收集
jdk9里可以动态的调整这个阈值,通过下面的参数来设定
它会添加一个安全的空挡空间,让堆得空间足够大,容纳哪些浮动的垃圾,这样呢可以避免并发垃圾回收退回到Full GC
相关文章:
黑马JVM总结(十八)
(1)G1_FullGC的概念辨析 SerialGC:串行的,ParallelGC:并行的 ,CMS和G1都是并发的 这几种垃圾回收器的新生代回收机制时相同的,SerialGC和ParalledGC:老年代内存不足触发的叫FullGC…...
Android调用相机拍照,展示拍摄的图片
调用相机(隐式调用) //自定义一个请求码 这里我设为10010int TAKE_PHOTO_REQUEST 10010;int RESULT_CANCELED 0;//定义取消码//触发监听,调用相机image_camera.setOnClickListener(new View.OnClickListener() {Overridepublic void onCli…...
企业如何找媒体发稿能收录且不被拒稿,媒介盒子无偿分享
媒平台像头条、百家号、微信、微博、搜狐等平台,都支持全自助发稿,拥有庞大的用户群体。也正是因为这些平台的发展,衍生出了一大批自媒体KOL,影响力与传统媒体不相上下甚至更胜。 媒体宣发是企业营销的必要途径之一。软文是成本低…...
利用cms主题构造木马(CVE-2022-26965)
简介 CVE-2022-26965是Pluck CMS 4.7.16版本存在一个远程shell上传执行漏洞。 攻击者可利用此漏洞通过构造恶意的主题包进行上传并执行,未经授权访问服务器,造成潜在的安全隐患。 过程 1.打开环境,查看源码,发现login.php 2.进…...
【MTK】【WFD】手机投屏到投影仪不显示画面
问题分析: 在投屏过程中,有时候会出现WFD sink端回复的video 格式表不正确,sink表示是支持VESA(3fffffff),但是当手机根据协商结果得到最优分辨率并发送给sink端时,sink端看上去没有正常播放,其实实际上应该是不支持的。 比如我们这个问题就是CES表中的0001ffff,最大…...
多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出
多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出 目录 多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向…...
scrapyd-完整细节
安装scrapyd服务 pip install scrapyd 安装scrapyd客户端 pip install scrapyd-client 安装好以后重新开启cmd输入命令 scrapyd 出现以下结果代表安装成功 打开浏览器输入网址,即可打开界面客户端 http://127.0.0.1:6800/ 回车后显示一下ok内容代表部署成功 回到服…...
【iOS逆向与安全】插件开发之某音App直播间自动发666
1.目标 由于看直播的时候主播叫我发 666,支持他,我肯定支持他呀,就一直发,可是后来发现太浪费时间了,能不能做一个直播间自动发 666 呢?于是就花了几分钟做了一个。 2.操作环境 越狱iPhone一台 frida ma…...
AI Studio星河社区生产力实践:基于文心一言快速搭建知识库问答
还在寻找基于文心一言搭建本地知识库问答的方案吗?AI Studio星河社区带你实战演练(支持私有化部署)! 相信对于大语言模型(LLM)有所涉猎的朋友,对于“老网红”知识库问答不会陌生。自从大模型爆…...
http1和http2的主要区别
主要有四个方面: 二进制分帧多路复用服务器主动推送头部压缩 将前两点结合来说,首先 二进制分帧 帧:HTTP/2 数据通信的最小单位; 消息:HTTP/2 中,例如在请求和响应等操作中,消息由一个或多个…...
一文了解水雨情在线监测站的优势
随着全球气候变化的加剧,水雨情的监测变得越来越重要。水雨情监测站作为现代环境监测系统的重要组成部分,其优势在实现环境智能监控方面得到了充分体现。 实时监测,数据准确 水雨情监测站通过先进的技术设备和智能传感器,能够实时…...
windows11中安装curl
windows11中安装curl 1.下载curl curl 下载地址:curl 2.安装curl 2.1.解压下载的压缩包 解压文件到 C:\Program Files\curl-8.3.0_1-win64-mingw 目录 2.2.配置环境变量 WINS 可打开搜索栏,输入“编辑系统环境变量” 并按回车。 3.可能遇到的问题 3…...
小谈设计模式(5)—开放封闭原则
小谈设计模式(5)—开放封闭原则 专栏介绍专栏地址专栏介绍 开放封闭原则核心思想关键词概括扩展封闭 解释抽象和接口多态 代码示例代码解释 优缺点优点可扩展性可维护性可复用性高内聚低耦合 缺点抽象设计的复杂性需要预留扩展点可能引入过度设计 总结 专…...
计算机视觉与深度学习-全连接神经网络-训练过程-欠拟合、过拟合和Dropout- [北邮鲁鹏]
目录标题 机器学习的根本问题过拟合overfitting泛化能力差。应对过拟合最优方案次优方案调节模型大小约束模型权重,即权重正则化(常用的有L1、L2正则化)L1 正则化L2 正则化对异常值的敏感性随机失活(Dropout)随机失活的问题 欠拟合 机器学习的根本问题 机器学习的根…...
SwiftUI Swift iOS iPadOS 实现更改 App 图标
Xcode: 14.3.1 更改 App 图标 淘宝,支付宝,有道翻译有时候会随着运营活动去调整图标,比如 双 11。(这个很简单,替换一下 AppIcon 就可以了)Github App 提供了多套图标可以修改。(需要配置 &…...
Java————List
一 、顺序表和链表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构, 常见的线性表:顺序表、链表、栈、队列… 线性表在逻辑上是线性结构,也就说是连续的一条直…...
uniapp 触底加载
方式一 onReachBottomDistance 缺点:需要整个页面滑动,局部滑动触发不了 { // pages.json // 路由下增加 onReachBottomDistance "path": "detailed/detailed","style": {"navigationBarTitleText": "收…...
大模型赛道如何实现华丽的弯道超车
🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…...
CAN总线物理层
本文的目的并不是为了介绍或普及CAN总线相关知识,而是为了了解CAN总线,进而为CAN通信一致性测试做知识储备。 CAN,控制器局域网,全称:Controller Area Network。1986年,由德国Bosch公司为汽车开发的网络技术,主要用于汽车的监测与控制,目的为适应汽车“减少线束的数量…...
中兴面试-Java开发
1、Springboot框架,yarn是怎么配置的 Spring Boot 本身没有直接的配置或集成与 YARN (Yet Another Resource Negotiator) 的特性,YARN是Hadoop的一个资源管理和作业调度平台。如果你想在 YARN 上运行Spring Boot应用,你需要考虑将你的Spring…...
浅谈 React 与 Vue 更新机制的差异
前言 哈喽,大家好,我是 Baker !🎉 对于前端的 Vue 和 React 相信大家并不陌生,这两个库有着截然不同的设计思想和发展目标,对于我们上层使用者来说,研究它们的差异不仅让我们更加深入的去理解…...
Delft3D水动力与泥沙运动模拟实践技术应用
水体中泥沙运动是关系到防洪,调水等方面的重要问题,也是水利和水环境领域科研热点之一。水利数值模型,在环境影响评价、防洪规划等方面也有着广泛的应用。荷兰Delft研究所开发的Delft3D模型是世界上最先进的水动力之一,能够运用于…...
Linux 本地Yearning SQL 审核平台远程访问
文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用…...
Redis集群(Cluster)
1. 什么是集群 广义的集群:只要是多台机器,构成一个分布式系统,就可以称为一个“集群”。像前面的主从结构,哨兵模式都是“广义的集群”狭义的集群:redis提供的集群模式,这个集群模式主要解决存储空间不足…...
Scapy 解析 pcap 文件从HTTP流量中提取图片
Scapy 解析 pcap 文件从HTTP流量中提取图片 前言一、网络环境示例二、嗅探流量示例三、pcap 文件处理最后参考 作者:高玉涵 时间:2023.9.17 10:25 环境:Linux kali 5.15.0-kali3-amd64,Python 3.11.4,scapy…...
难得有个冷静的程序员发言了:纯编码开发实施的项目,失败的案例也有很多
难得有个冷静的程序员发言了:纯编码开发实施的项目,失败的案例也有很多。假如用低代码实施,能达到不失败或提高成功率,对软件开发项目交付,会是重大的价值。 我的观点:两者都可能失败,不同的是&…...
Leetcode.146 LRU 缓存
题目链接 Leetcode.146 LRU 缓存 mid 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 c a p a c i t y capacity capacity 初始化 LRU 缓存int get(int key) 如果关键…...
科技资讯|Canalys发布全球可穿戴腕带设备报告,智能可穿戴增长将持续
市场调查机构 Canalys 近日发布报告,表示 2023 年第 2 季度全球可穿戴腕带设备出货量达 4400 万台,同比增长了 6%。 主要归功于其亲民的价格以及消费者对价位较高的替代品仍持谨慎态度,基础手环市场尽管与去年同期相比有所下降,…...
使用https接口,无法调通接口响应不安全
网页pc使用不安全https 页面提示不安全–点击高级–跳过 接口使用部安全https 无法像页面一样可以跳过 方法:安装证书 还是无法响应报错不安全: 1、确定证书绑定ip还是域名(ip和域名都可以绑定) 使用的是httpsip,报…...
uniapp开发h5,解决项目启动时,Network: unavailable问题
网上搜了很多,发现都说是要禁用掉电脑多余的网卡,这方法我试了没有好,不晓得为啥子,之后在网上看,uniapp的devServer vue2的话对标的就是webpack4的devserver(除了复杂的函数配置项),…...
美国做科普的网站/品牌营销策划方案怎么做
论坛管理点击组件-论坛,即可打开论坛管理系统。首页打开论坛管理系统后首页如下:设置点击设置,会弹出含有系统设置、分区设置、模块设置的页面系统设置点击系统设置后,点击右边列表里任何一行,即可对该行的配置值更改&…...
深圳市最新出行政策/seo搜论坛
【5月4日讯】自从华为发布了鸿蒙OS系统以后,作为首款全平台国产操作系统,也是得到了很多网友们的高度关注,因为这是华为在遭受到谷歌断供以后,正式将其“备胎系统”正式转正,全新的华为鸿蒙OS系统由于采用了微内核设计…...
网站开发开题报告范文/优化设计三年级上册答案
翻车 题目简介: 翻车 (rollover.cpp/c/pas)【问题描述】 有一天,小武找到了翻车王,给了他n个整数a1,a2,a3,…an,翻车王 需要选择其中的k个数,使得选出的k个数中任意两个的差都可以被m整除。 选出的数可以重复ÿ…...
wordpress如何安装模板文件夹/简述网站建设的流程
openvino_datawhale https://aiedge.datawhale.club/page/2935608?navIndex0...
微信代理网站模板/全网整合营销推广
/Applications/VirtualBox.app/Contents/MacOS/VBoxManage startvm "centos7" --type headless...
如何建立小程序网站/如何自己开发一个平台
最近使用代理自动配置脚本,方便客户端使用代理,但发现在IIS上默认没有配置.pac这种文件的MIME类型!解决方法:在IIS里,在站点上点右键->“属性”->“HTTP头”->“MIME类型”…...