读Java性能权威指南(第2版)笔记16_垃圾回收C

一个移动开发老码农的书单 老码农是个比较宅的人,不爱玩游戏,只爱看书。过去10年来读的书中,还能记得的书大部都是很不错的,列出来推荐给大家。会持续更新。 一、开发技术 1、Effective Objective C 2.0 适合代码量在5000行以后阅读,对细节 阅读详情

 

1. 调整堆的大小

1.1. 随着堆的大小增加,停顿的持续时间也会增加

1.2. 停顿发生的频率确实会降低,但是停顿的持续时间会拖慢整体性能

1.3. 操作系统进行的交换对JVM是不公开的

1.3.1. 操作系统要将数据从磁盘交换到RAM,这是一个代价高昂的操作

1.4. 首要规则是设定堆的大小永远不要超过机器的物理内存

1.4.1. 如果有多个JVM在运行,那么这适用于所有堆的总和

1.5. -XmsN标志

1.5.1. 初始值

1.6. -XmxN标志

1.6.1. 最大值

1.7. 默认值

 

1.7.2. 在物理内存小于192 MB的机器上,堆的最大值会是物理内存的一半(96 MB或更少)

1.8. 如果JVM发现堆在初始大小时,GC的次数太多,它就会不断地增加堆大小,直到JVM执行的GC数量“适当”,或者直到堆大小达到最大值

1.9. 对于不需要堆很大的应用程序来说,根本不需要设置堆的大小,只需要设定GC算法的性能目标

1.10. 除非应用程序需要比默认值更大的堆,否则优化时可以调整GC算法的性能目标而不是微调堆的大小

1.11. 一个有效的经验是,调整堆的大小,让其在Full GC之后,仍然被占用30%

1.11.1. 用jconsole连接应用程序,强制执行Full GC,并观察当Full GC完成后有多少内存被占用

1.11.2. 确保它有额外的0.5 GB~1 GB内存来满足JVM的非堆需求

1.12. 当JVM运行在隔离容器中时,你需要设定堆的最大值

1.13. 确切地知道应用程序需要多大的堆,那么不妨将初始值和最大值都设置为该值

1.13.1. 因为GC不再需要弄清楚是否应该调整堆大小,稍微高效一点

2. 调整分代大小

2.1. 新生代相对较大

2.1.1. Young GC的停顿时间会增加

2.1.2. 新生代的回收频率会降低

2.1.3. 晋升到老年代的对象也会更少

2.1.4. 老年代相对会更小

2.1.4.1. 被填满的频率会更高

2.1.4.2. 会执行更多的Full GC

2.2. 优化分代大小的命令行标志,调整的都是新生代的大小,老年代自动得到剩余的所有空间

2.3. -XX:NewRatio=N

2.3.1. 设置新生代与老年代的比例

2.3.2. 新生代初始大小=堆的初始大小/(1 +NewRatio)

2.3.3. 默认值是2

2.3.3.1. 新生代的初始大小是堆初始大小的33%

2.3.4. 如果应用程序会动态调整堆大小,并且需要更大的(或更小的)新生代,那就重点设置NewRatio的值

2.4. -XX:NewSize=N

2.4.1. 设置新生代的初始值

2.4.2. 设置了该选项,那么它将优先于通过NewRatio计算出来的值

2.4.3. 没有默认值

2.4.3.1. 默认情况下这个值会通过NewRatio计算出来

2.5. -XX:MaxNewSize=N

2.5.1. 设置新生代的最大值

2.5.2. 通过设定新生代的最小值和最大值来进行优化是十分困难的

2.6. -XmnN

2.6.1. 将NewSize和MaxNewSize设置为同一个值的简单写法

2.6.2. 如果堆的大小是固定的(通过设置-Xms等于-Xmx),通常最好也用-Xmn将新生代大小设为固定的

2.7. 自适应大小

2.7.1. 一般应该保持开启

2.7.1.1. 因为GC算法会通过调整代的大小,来尽量满足它们停顿时间的目标

2.7.1.2. 控制着JVM改变堆内新生代和老年代比例的方式

2.7.2. 关闭-XX:-UseAdaptiveSizePolicy标志

2.7.2.1. 默认值为true

2.7.3. 如果堆的最小值和最大值设置为相同的值,并且新生代的初始值和最大值也设为相同的值,那么自适应大小实际上就被关闭了

2.7.4. 如果你想将其中某个阶段的GC优化到最佳状态,禁用自适应大小很有用

2.7.5. 对于精细优化过的堆,禁用自适应大小能小幅提升性能

2.7.6. 开启-XX:+PrintAdaptiveSizePolicy标志

2.7.6.1. 查看JVM是如何调整应用程序内空间大小

2.7.6.2. 执行GC时,GC日志里会包含回收过程中各个代是如何调整大小的详细信息

SRAM故障排查实战:如何用Nano Prober定位6T存储单元的异常点 本文详细介绍了在SRAM故障排查中,如何运用Nano Prober(纳米探针)技术精准定位6T存储单元的内部异常。面对传统方法难以发现的电性参数漂移(如晶体管阈值电压偏移)或微小物理缺陷,Nano Prober能直接对单个6T单元内的晶体管进行I-V特性测量,结合失效模式分析,有效解决读写错误等疑难问题,是芯片失效分析的关键工具。 阅读详情

相关推荐

kali设置安装burpsuite中文版

工具:通过网盘分享的文件:Burpsuite 链接:提取码: jay1。

m0_74786138的博客 5202

Java性能权威指南(第2版)读后总结与感想

语言在不断进化发展、jvm也在不断进化发展,在采用java 8 不变的情况下,使用包含新的垃圾回收算法的jdk,使用新的垃圾回收算法能够获得更好的性能体验。了解不难,学精很难,性能调优不仅仅是技术活,更是一门艺术,需要考虑的场景、判断的条件纷繁复杂,各种开关也会相互影响,使用的不好,还不如采用默认方式。验证、测试自然少不了各种工具,既有原生自带的,也有开源或者商业的第三方工具,在这个方面,介绍的也较详细,能够帮忙我们分析性能问题的源头。有些性能建议是包治百病的,比如,使用更小的对象;

lyingSeven的博客 209

C# WinForm和Sherlock进行对接

文章目录 前言 一、使用步骤 二、使用步骤 1.引入库 2.读入数据 总结 前言 本人公司最近在做一款瑕疵检测的视觉项目,项目中利用Sherlock从相机中取图和对图像进行视觉处理,然后将图像和数据传输到项目中。这过程中软件需要和Sherlock进行图像和数据的传递,这就需要WinForm和Sherlock进行对接,但我在网上查找了许久能用上的资料十分有限,所以我决定写下这篇文章,来做一次总结,同时也希望能帮助到同样在为此问题困扰的你。 一、使用步骤 废话不...

adminmmrt的博客 3221

解密电商大促背后的智慧:LSTM与ARIMA模型的双剑合璧

举个例子,如果某东发现某款新推出的电子产品在促销前夕搜索量突然暴涨,虽然这个产品没有过去的销售记录,但LSTM模型可以结合用户对类似产品的行为模式、实时的市场反馈,迅速捕捉到这些变化,并预测这款产品在大促期间的需求会急剧上升。想象一下,如果预测不准确,备货不足,商品很快就卖光了,大量用户可能在促销期间买不到想要的商品,这不仅让用户失望,还会影响某东的品牌形象。这种情况就像我们看一部很长的电视剧,看得越久,前面的情节可能就越来越模糊,到最后有些关键的情节细节都忘了,影响了对整个剧情的理解。

小蒋聊技术 2091

eMMC FFU固件更新实战:从协议解析到设备修复

本文详细解析eMMC FFU固件更新技术,从协议原理到实战操作,涵盖EXT_CSD寄存器操作、命令流状态机解析及专业工具使用指南。通过真实维修案例,展示如何利用FFU机制修复设备故障,并提供高级优化技巧与安全注意事项,是硬件工程师和维修技术人员的实用参考。

weixin_29191761的博客 380

Java性能权威指南-总结13

如果某个类需要记录8个可能的状态之一,用一个字节就可以了,而不需要一个int,这就可能会节省3字节。使用float代替double,int代替long,诸如此类,都可以帮助节省内存,特别是在那些会频繁地实例化的类中。使用大小适当的集合类(或者使用简单的实例变量代替集合类)可以达到类似的节省空间的目的。

weixin_42583701的博客 1527

使用Matlab simulink的PLC coder功能进行算法搭建与处理

使用的案例如下: Anti-Windup PID Control Demonstration with Feedforward Control 将其中的PID块生成SCL语言再导入TIA 使用的平台如下: Matlab 2019b TIA portal 15.1 应用:可以在PLC中搭载一些并不方便使用的,或者比较难使用的算法 步骤如下: 首先打开案例,案例地址我放在最下面,点击Run运行仿真,必...

苦走一口田 1万+

【Java核心知识体系构建指南】:6本不可错过的权威书籍推荐

构建扎实Java知识体系,精选6本经典书籍助力程序员进阶。涵盖JVM原理、并发编程、设计模式等核心主题,适合自学者与面试备战者。系统性强、案例权威,是java程序员书籍推荐中的优选方案,值得收藏。

BreakNexus的博客 441

深度学习在地质勘探中的应用:使用Python构建卷积神经网络进行地震数据分析

在本文中,我们介绍了如何利用深度学习技术,特别是卷积神经网络(CNN),来处理和分析地震数据。我们使用了Python编程语言和TensorFlow框架构建了一个CNN模型,并使用地震数据进行了训练和评估。在本文中,我们将探讨如何利用深度学习技术,特别是卷积神经网络(CNN),来处理和分析地震数据。首先,我们需要获取地震数据集。通过本文的介绍,希望您能对深度学习在地质勘探领域的应用有更深入的了解,并能够应用这些技术来解决实际问题。在准备好地震数据和构建CNN模型后,我们需要将数据分为训练集和测试集。

斌擎科技 1472

【时时三省】vector cast (vcast) 集成测试使用教程

山不在高,有仙则名。水不在深,有龙则灵。----优快云 时时三省。

时时三省的博客 709

Day17_JavaScript高级核心垃圾回收执行上下文闭包完全指南(上)

JavaScript 高级核心:垃圾回收、执行上下文与闭包指南 本文深入探讨 JavaScript 运行时的三大核心机制:垃圾回收、执行上下文和闭包。内容包含: 垃圾回收机制:详细解析引用计数和标记清除两种算法,对比优缺点,并介绍V8引擎的分代回收策略 执行上下文:剖析全局和函数执行上下文的创建过程,解释变量提升和暂时性死区现象 闭包原理:从作用域链角度分析闭包的形成条件,探讨其在React Hooks和Vue响应式系统中的应用 实战应用:提供内存泄漏排查、闭包优化等工程场景解决方案,包含多个可运行的代码示

黄裳博客 809

汽车零部件产线实战:C#上位机+YOLO实现螺栓装配到位视觉检测

本项目基于C#上位机+YOLOv8实现汽车零部件产线螺栓装配到位视觉检测,全程贴合产线实际场景,从硬件选型、安装调试,到模型训练、上位机开发,再到项目联调、优化扩展,均提供手把手实操指导,代码可直接复制使用,规避了工业视觉产线检测的高频踩坑点。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1332

Java Serverless资源配置最佳实践(2024权威版)

掌握Java Serverless资源配置最佳实践,有效降低延迟与成本。涵盖函数内存、CPU配比、冷启动优化等核心方法,适用于高并发、事件驱动等场景。提升应用性能与资源利用率,值得收藏。

IterLoom的博客 720

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JVM面试题解析与性能调优实战指南

Java虚拟机(JVM)作为Java应用运行的核心环境,其内存管理、垃圾回收机制和类加载体系是开发者必须掌握的基础知识。从分代收集算法到CMS、G1等现代垃圾回收器,JVM通过智能内存分配和自动回收机制显著提升了开发效率。在分布式系统和高并发场景下,合理的JVM参数调优能有效解决内存泄漏、GC停顿等性能瓶颈。通过分析GC日志和使用MAT等工具,工程师可以快速定位元空间溢出、CPU飙高等典型问题。掌握TLAB分配、锁升级等底层原理,不仅能应对技术面试,更能为Kafka、Elasticsearch等中间件的性能

weixin_34005042的博客 431

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JAVA虚拟机 安全区域_java安全沙箱(三)之内置于Java虚拟机(及语言)的安全特性...

java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是:本篇博客主要介绍“内置于Java虚拟机(及语言)的安全特性”的基本原理;如需了解其它几类安全机制可以通过上面的博客链接进入查看。简介jvm装载一个类,并且对字节码进行了四趟扫描,这些字节码就能安全地被执行了。然而去了这些安全校验,jvm在执行字节码时还进行了一些内置的安全机制校验。这些安全机制...

weixin_33483567的博客 91

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Java本地内存访问权威指南】:从权限申请到资源释放的完整流程

掌握Java外部内存访问权限的完整流程,解决本地内存操作难题。涵盖JNI调用、MemorySegment配置与权限申请步骤,适用于高性能计算与系统级编程。确保安全访问并正确释放资源,提升程序稳定性与效率,值得收藏。

FuncTide的博客 631

java基础知识刷题网站,稳进大厂

引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。

2401_84414664的博客 822

java 析构函数_java安全沙箱之内置的JAVA虚拟机,读完之后,大部分程序员收藏了...

简介jvm装载一个类,并且对字节码进行了四趟扫描,这些字节码就能安全地被执行了。然而去了这些安全校验,jvm在执行字节码时还进行了一些内置的安全机制校验。这些安全机制主要包括:内存自动分配自动拉机回收机制数组边界检查空指针检查异常处理机制内存自动分配在编写java程序时几乎不能直接分配内存,比如当new一个对象时,jvm会在堆中自动帮程序分配好内存,当在方法中申明一个引用或常量时,jvm则会在栈上...

weixin_39687881的博客 115

java安全沙箱(三)之内置于Java虚拟机(及语言)的安全特性

参考: https://www.cnblogs.com/duanxz/p/6108354.html java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是:   - 类加载体系   - .class文件检验器   - 内置于Java虚拟机(及语言)的安全特性   - 安全管理器及Java API 本篇博客主要介绍内置于Java虚拟机(及语言)的...

改变ing 299

5步掌握Lua双领域实战:从游戏开发到嵌入式系统的完整进阶指南

你是否曾想过,一门仅需几MB内存的脚本语言如何同时征服游戏开发与嵌入式系统两大领域?Lua正是这样一个技术奇迹。在游戏开发中,Lua是《魔兽世界》等顶级游戏的核心脚本引擎;在嵌入式系统中,它驱动着路由器、智能家居设备甚至工业控制系统。本文将带你深入探索Lua在这两个看似截然不同领域中的实战应用,让你在短时间内掌握这门轻量级但功能强大的语言。 ## 核心关键词 - Lua游戏开发 - 嵌入式Lua

gitblog_07706的博客 362

【JVM深度解析】第32篇:JVM学习路径与资源汇总

本文系统梳理了JVM知识体系的学习路径,推荐了权威书籍与优质在线资源,并整理了常用诊断工具清单。内容涵盖从JVM基础原理到高级调优的完整学习路线:初级阶段掌握JVM架构与GC基础(2-4周);中级阶段学习性能监控与调优实战(4-8周);高级阶段深入JIT编译、JMM等底层原理(8-16周)。重点推荐《深入理解Java虚拟机》《Java性能优化权威指南》等经典书籍,以及Oracle官方文档、技术专家博客等在线资源。同时提供了jstat、VisualVM、Arthas等实用工具清单,帮助开发者全面掌握JVM核心

xyghehehehe的专栏 72

Java八股文:核心知识点与面试必备指南

Java作为主流的面向对象编程语言,其核心知识点包括JVM原理、并发编程和集合框架等,是构建稳定高效系统的技术基础。理解这些原理不仅能优化代码性能,还能解决实际开发中的内存泄漏、高并发等问题。在面试场景中,系统化的Java知识体系尤为重要,掌握如HashMap实现、GC算法等八股文内容,可以帮助开发者深入理解技术本质。本文通过解析面向对象特性、异常处理等基础概念,结合JVM内存管理和线程同步等高级主题,为Java开发者提供全面的学习路径和面试准备策略。

weixin_30635053的博客 657

java安全沙箱(三)之内置虚拟机安全特性

java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别如下: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及Java API 本篇博客主要介绍“内置于Java虚拟机(及语言)的安全特性”的基本原理;如需了解其它几类安全机制可以关注我的博客进入查看。 简介 jvm装载一个类,并且对字节码进行了四趟扫...

码动人生的博客 340
上一篇: 读Java性能权威指南(第2版)笔记15_垃圾回收B
下一篇: 读Java性能权威指南(第2版)笔记17_垃圾回收D
躺柒
博客等级 码龄4年 7004粉丝 1322原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值