最新要闻
- 最便宜竖折叠继任者!摩托罗拉Razr 2023真机图出炉:首次拼色后壳
- 当前快报:汽车价格战新进展:南北大众同日入局 丰田买一辆送一辆
- 【时快讯】《满江红》中国影史票房榜第6:力压《唐人街探案3》 票房突破45.23亿
- 环球即时:2023开门红!长四丙成功发射“一箭双星”
- 环球消息!第一批PCIe 5.0 SSD都是残血!14GB/s满血版还早呢
- 世界快资讯丨有了ChatGPT 动动嘴就能使唤Excel:我的童年梦想实现了
- 每日热门:8岁男孩单手打破汉诺塔世界纪录:4.305秒搞定4层
- 当前头条:海绵宝宝卡通图片线条图_海绵宝宝卡通图片
- 天生要完美电视剧28集完整版_天生要完美电视剧
- 孙海洋夫妇餐饮公司被列经营异常:本人回应
- 今日报丨香港男子深圳上班每天通勤4小时:月薪3万 每天通勤费用80元
- 当前观察:大获成功!《最后生还者》成史上收视率最高的游戏改编剧
- 爆款椰子鞋停售后:阿迪在中国凉凉了
- 1.3kg下颜值、性能、屏幕全给你!华硕灵耀14 2023评测:续航惊人
- 观热点:长城汽车发布Hi4全新新能源技术:4驱享受 2驱能耗
- 全球关注:杠上比亚迪秦PLUS DM-i 新款日产轩逸上市:9.98万起
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
读Java性能权威指南(第2版)笔记13_堆内存下
(资料图片仅供参考)
1.对象重用
1.1.原因
1.1.1.许多对象的初始化成本很高,权衡了增加的GC时间之后,还是重用对象的效率更高
1.2.只适用于初始化成本很高且数量较少的一组对象
1.2.1.被重用的对象会在堆中停留很长时间。如果堆中有大量对象,创建新对象的空间就更少了,因此GC操作会更频繁。
1.3.方式
1.3.1.对象池
1.3.1.1.线程池化可以节省创建线程的时间
1.3.1.2.在池中有少量对象并不会对GC效率产生太大影响,但堆中充满池化对象时会大大减慢GC的速度
1.3.2.线程局部变量
1.3.2.1.随机数生成器作为线程局部变量,可以节省使用随机数种子创建生成器所需的时间
1.4.特点
1.4.1.初始化对象需要很长的时间
1.4.2.共享的对象数量往往很少
1.4.2.1.它们对GC操作的影响降到了最低,因为它们不足以减慢GC周期
1.5.应用场景
1.5.1.线程池
1.5.1.1.线程初始化的成本很高
1.5.2.JDBC连接池
1.5.2.1.数据库连接初始化的成本很高
1.5.3.大数组
1.5.3.1.每个元素都必须初始化为基于0的默认值(null、0或false,视情况而定)
1.5.4.原生NIO缓冲区
1.5.4.1.无论缓冲区有多大,分配一个直接的java.nio.Buffer(调用allocateDirect()方法返回的缓冲区)都是成本很高的操作
1.5.4.2.最好是创建一个大的缓冲区,然后通过按需切片的方式来管理缓冲区,以便在将来的操作中返回它们重新使用
1.5.5.与安全相关的类
1.5.5.1.MessageDigest、Signature以及其他安全算法的实例
1.5.6.字符串编码器和解码器对象
1.5.7.StringBuilder帮助类
1.5.8.随机数生成器
1.5.8.1.Random类和(特别是)SecureRandom类的实例
1.5.9.从DNS查询中获得的名字
1.5.9.1.网络查询的成本很高
1.5.10.ZIP编码器和解码器
1.5.10.1.初始化成本并不是特别高,但是它们的释放成本很高
1.5.10.2.依赖对象终结(finalization)来确保它们使用的原生内存也被释放了
2.对象池
2.1.大小可能很难设置正确
2.2.不能直接让对象退出作用域,程序员必须将对象返还到池中
2.3.持有大量对象会降低GC的效率(有时会大幅降低)
2.4.必然需要同步,如果对象被频繁地删除和替换,对象池可能会存在大量竞争
2.5.普通类的大型对象池带来的性能问题肯定会比解决的问题还多
2.6.限流对池性能的影响是有利的,池允许对稀缺资源的访问进行限流
3.线程局部变量
3.1.在线程内总是可用的,不需要显式地归还
3.2.不能对资源的访问进行限流
3.2.1.除非线程数量本身可以起到限流的作用
3.3.不需要同步
3.3.1.只能在单个线程内使用
3.3.2.使用ThreadLocalRandom类性能会更好
3.4.如果线程和可重用对象之间有一一对应的关系,那么线程局部变量更容易使用
4.不确定引用
4.1.indefinite reference
4.2.表示任何特殊类型的引用
4.2.1.软引用或弱引用
4.2.2.实际上是一个对象实例
4.3.更多地用于缓存耗时的计算或数据库查询的结果,而不是用于重用一个简单对象
4.4.对垃圾回收器的影响
4.4.1.会导致应用程序使用更多的内存
4.4.2.不确定引用被垃圾回收器回收至少需要两个GC周期,这对垃圾回收器的影响更大
4.4.2.1.在最坏的情况下,引用队列不会被立即清理,而是需要经过很多GC周期后才会释放一切对象
4.5.-XX:+PrintReferenceGC标志
4.5.1.看到处理引用所花费的时间
4.5.2.默认为false
4.6.不确定引用会消耗自身的内存,而且会长时间持有其他对象的内存,应尽量少用
5.引用
5.1.reference
5.2.一个引用(或对象引用)可以是任何类型的引用
5.3.强引用、弱引用和软引用等
6.所引对象
6.1.referent
6.2.将另一个引用(几乎总是强引用)嵌入到不确定引用类的实例中。被封装的这个对象被称为所引对象
7.软引用
7.1.Soft Reference
7.2.当相关对象在未来有很大概率被重用,而你想让垃圾回收器回收最近没有用到的对象时使用
7.2.1.软引用可以长期持有对象,它会提供一个简单的、GC友好的LRU缓存
7.3.本质上是一个大型的、最近最少使用的(LRU)对象池
7.4.获得良好性能的关键是要确保它被及时清理
7.5.清理时机
7.5.1.所引对象必须没有被其他的强引用所引用
7.5.2.软引用是指向所引对象的唯一引用,那么当软引用最近没有被访问时,所引对象就会在下个GC周期被释放
7.6.-XX:SoftRefLRUPolicyMSPerMB=N标志
7.6.1.默认值是1000
7.7.长期运行的应用程序也可以考虑增加SoftRefLRUPolicyMSPerMB的值的条件
7.7.1.堆中有大量空闲空间可用
7.7.2.软引用的访问频率不高
7.8.不要使用过多的软引用,它们很容易填满整个堆
7.9.当对象的数量不太多时,软引用的效果才会好,否则,还是要考虑使用更传统的、大小有界的对象池,并且以LRU缓存形式实现
8.弱引用
8.1.weak reference
8.2.在相关所引对象会被几个线程同时使用时使用
8.3.当强引用被清理时,弱引用立即被清理
8.4.垃圾回收器在每个GC周期都会回收只有弱引用的对象
8.5.集合类常常是内存泄漏的源头
8.5.1.WeakHashMap和WeakIdentityMap
8.5.2.基于不确定引用的集合可能很有用,但是应该谨慎使用
9.终结器和最终引用
9.1.不鼓励使用终结器,应该使用新的Cleaner类
9.2.Object类的finalize()方法
9.2.1.糟糕的方法,你应该尽量避免使用
9.2.2.在JDK 11中被废弃了
9.3.Cleaner(清理器)对象
9.3.1.使用新的java.lang.ref.Cleaner类代替finalize()方法会容易很多
9.3.2.在JDK 11中使用
9.3.3.执行清理的对象不能包含指向需要被清理的对象的引用
9.3.3.1.因为lambda太容易引用外部类了,不鼓励开发人员使用lambda,而是要使用类
9.4.如果你必须使用终结器,请确保将对象访问的内存保持在最低限度
9.5.使用另一种类型的不确定引用,而不是隐式地使用Finalizer引用
9.5.1.PhantomReference类(虚引用)
9.5.1.1.JDK 11使用
9.6.终结器队列
9.6.1.当所引对象符合GC条件时,用来处理Finalizer引用的引用队列
9.6.2.命令来处理终结器队列
9.6.2.1.% jcmd process_id GC.run_finalization
9.6.2.2.% jmap -finalizerinfo process_id
10.普通对象指针
10.1.ordinary object pointer,oop
10.2.-XX:+UseCompressedOops
10.2.1.对于4 GB到32 GB的堆,应该使用
10.2.2.只要堆的最大大小小于32GB,标志默认启用
10.3.使用了31 GB的堆并启用了压缩的oop的程序,通常比使用了33 GB堆的程序快
10.4.最好使用小于32 GB的堆,或者至少比32 GB大几个GB的堆
10.5.一旦更多的内存被添加到堆中以弥补未压缩的引用所使用的空间,GC周期的数量就会减少
10.6.规划至少38 GB的堆是一个好的开始
关键词:
-
世界速递!day05-功能实现04
功能实现04后端:https: github com liyuelian furniture-back-end git前端:https: github com liyuelian furnit
来源: 读Java性能权威指南(第2版)笔记13_堆内存下
最便宜竖折叠继任者!摩托罗拉Razr 2023真机图出炉:首次拼色后壳
当前快报:汽车价格战新进展:南北大众同日入局 丰田买一辆送一辆
世界速递!day05-功能实现04
Vue————Vue v2.7.14 入口文件【二】
【时快讯】《满江红》中国影史票房榜第6:力压《唐人街探案3》 票房突破45.23亿
环球即时:2023开门红!长四丙成功发射“一箭双星”
环球消息!第一批PCIe 5.0 SSD都是残血!14GB/s满血版还早呢
世界快资讯丨有了ChatGPT 动动嘴就能使唤Excel:我的童年梦想实现了
每日热门:8岁男孩单手打破汉诺塔世界纪录:4.305秒搞定4层
当前头条:海绵宝宝卡通图片线条图_海绵宝宝卡通图片
天生要完美电视剧28集完整版_天生要完美电视剧
对C++做爬虫的代码进行简单分析
世界热推荐:2.HelloSpring
孙海洋夫妇餐饮公司被列经营异常:本人回应
今日报丨香港男子深圳上班每天通勤4小时:月薪3万 每天通勤费用80元
【全球独家】63.C++类型转换
世界今亮点!python可变长参数
当前观察:大获成功!《最后生还者》成史上收视率最高的游戏改编剧
爆款椰子鞋停售后:阿迪在中国凉凉了
1.3kg下颜值、性能、屏幕全给你!华硕灵耀14 2023评测:续航惊人
观热点:长城汽车发布Hi4全新新能源技术:4驱享受 2驱能耗
全球关注:杠上比亚迪秦PLUS DM-i 新款日产轩逸上市:9.98万起
8GB、16GB显存的性能差多少?实测多达172%!
明解数据库------数据库存储演变史
AMD最强核显跑分上来了!但是还打不过GTX 1650 Ti
全球最新:买丰田bZ4X电动车 送一辆威驰轿车?4S店回应:活动属实
RTX 30公版显卡突然集体消失!刚刚降价40%
微头条丨公司规定不接董事长电话1次罚10000元 员工:试岗1天就走了
【全球快播报】校友承诺捐赠1100万元却不兑现被告 学校:他具备履约能力
紧跟微信步伐:支付宝掌纹支付设备外观专利获授权
【天天快播报】搅局中端市场!一加Ace2V评测:将16G满血内存进行到底
通讯!破壁机虚标功率后 疯狂小杨哥带货又翻车:面霜因虚假宣传被罚
《王者荣耀》出海“首战告捷”:登顶巴西免费游戏榜
环球报道:记录--vue3+setup+ts 知识总结
【世界速看料】程序员养发神器:拒绝加班熬夜,告别秃头!
【世界聚看点】【希尔排序ShellSort算法详解】Java/Go/Python/JS/C不同语言实现
环球微头条丨【分享贴】项目中为啥总是项目经理一人干着急?
使用PostgreSQL而不是MySQL存储中型数据有什么好处?
3000块多品牌SSD质量大PK:整体比机械硬盘可靠
玩家购入二手Switch主机:可是被卖家坑惨了
航班晚点1小时 机长提速提前20分钟到达帮助乘客换机?山航回应
每人1600元!北京发放首批“京彩·绿色”消费券:买手机PC都能用
当前热文:涉及121万辆!我国2022年新能源汽车召回量创历史新高:电池、电机缺陷多
环球最资讯丨暴风的恋人百度云_暴风的恋人
有监督学习——线性回归
禁用XXE处理漫谈
腾讯-广点通转化归因
来真的!贾跃亭:3月30日生产FF91 百万豪车来了
【天天新视野】30个汽车品牌降价 成都发放消费券:满40万可减8000元
【世界独家】华硕发布TUF Gaming M3 Gen II鼠标:仅重59g、IP56防尘防水
全球今亮点!过期1天的食物还能吃吗?
日系中的另类!国产马自达CX-50内饰发布:原汁原味引入海外版
加速资源整合,星纪魅族围绕手机、XR、前瞻技术拓展智能生态
Prompt-Engineering-Guide 学习摘要2
今日关注:电动汽车综合检测
观焦点:这几个群,程序员可千万不要进!
每日快讯!12万元买宝马“3系”?宝马中国回应降价传闻:指导价没变
当前快讯:玩家不满《魔戒:咕噜》新宣传片:他没有主角光环!
环球热讯:小米搞出“新花样”:可层叠摄像模组专利获授权
焦点快报!没有秘密了!AI或能够读取大脑重现梦境
今日快看!新老代表接力提建议将牡丹定为国花:100多个国家都有国花了
【天天报资讯】山西李家大院哪些人可以享受半价票优惠
环球新资讯:【机器学习】1. 广义线性模型
【世界新视野】密码学报如何正确Latex投稿?
环球今亮点!快 40 岁,刚被裁。。
金三银四每天一个.NET基础知识巩固(一)
今日要闻!从“13 天”到“0 天”延时,揭秘火山引擎 DataLeap SLA 保障最佳实践
世界热消息:谷歌报复性砸出5620亿参数大模型:比ChatGPT更恐怖 学术圈已刷屏
【环球播资讯】2月国产游戏出海成绩出炉:《原神》获收入和增长双料冠军
Nginx http 文件服务器 中文名称文件乱码以及不能访问下载问题 (解决全过程)
有关马的歇后语有哪些?有关马的古诗有哪些?
工科理科化现象亟待扭转!曹德旺等科学家企业喊话让学生去工厂一线真问题
【世界时快讯】委员喊话农村淘汰、封杀老头乐 网友吵翻:揭秘观点背后让人唏嘘?
隐婚男女的结局是什么?隐婚男女演员介绍
小学二年级班主任工作计划有哪些?小学二年级家长会发言稿
消防逃生的注意事项有哪些?消防逃生演练总结
旅游可持续发展的实质是什么?旅游可持续发展论文模板
英语六级考试时间安排分配是什么?英语六级考试题型简介
世界热头条丨虼蚤的读音是什么_虼蚤
描写景色的词语集锦有哪些?描写景色的段落摘抄
梁祯元为什么叫南韩贾宝玉?梁祯元为什么是队长?
中国相术十二宫都有哪些?相术十二宫实用顺口溜
田宅宫在脸上的什么位置?田宅宫代表什么?
Linux 上的开源视频字幕应用–Live Captions
全球信息:Win10专业版激活方法
【环球播资讯】kafka常用指令
剑指Notion:微软协作平台Loop即将进入公开预览阶段
当前滚动:又来一个“保时捷” 江汽EV3申报:国内首搭载46系列大圆柱电芯
160g超满足:嘉兴特产蛋黄大肉粽2.9元/只大促
环球播报:从“看不起”到“跟不上”:200多名理想汽车车主分享用车体验
热头条丨《街霸6》新解说员宣传片:日本少女冠军人美声甜!
新消息丨国内“投教第一股”九方财富登陆港股,业绩亮眼,市值逼近80亿
面向状态机编程:复杂业务逻辑应对之道
多光源渲染方案 - Many Lights Sampling
世界微动态丨在java中String类为什么要设计成final?Java面试常见问题
报道:LoadRunner——脚本优化(二)
马斯克要自建“乌托邦小镇”:员工全部搬进去 自己当“镇长”
拒绝投影行业亮度虚标!Vidda官宣三色激光全家桶新品
环球最资讯丨新一轮国内油价将于17日迎来调整:有再度搁浅可能