java性能分析-堆内存最佳实践-堆分析
堆内存最佳实践
优化垃圾回收器标志参数很重要但是采用更好的编程实践获得更大的性能提升
1.谨慎的创建对象并尽快的丢弃,是更好的内存是提高gc更好的方法
2.频繁创建某种类型的对象会导致整体的性能变差
对象复用设计
线程局部变量
每个线程中创建一个局部变量的副本提供每个线程的单独使用而不会出现线程共享问题
特殊对象应用
java特殊对象引用比如本地引用绑定jni设计
在程序运行时保持对特定对象的引用,而无需考虑该对象是否被回收
对象池
初始化对象池:一定数量的实例
对象池申请使用:线程获取对象
返回对象实例:使用完毕之后返回对象池
清理对象:防止对象池中存储过多无用的对象,需定期清理无用对象
通过对象的状态机控制对象的状态
堆分析
GC工具会通过强制FullGC实现数据的获取,而不会获得下次FullGC的相关信息
堆直方图 heap histogram
jcmd 139382 GC.class_histogram #只输出活跃的对象,该命令会强制执行FullGC -all会显示所有对象
num #instances #bytes class name
1: 111054 35515776 [B
2: 90189 10198200 [C
3: 101302 2431248 com.sleepycat.je.tree.LN
4: 89023 2136552 java.lang.String
5: 18140 2030832 java.lang.Class
6: 15560 1644088 [Ljava.lang.Object;
7: 42125 1348000 java.util.concurrent.ConcurrentHashMap$Node
显示直方图的其他命令
jmap -histo:live 139382 | more
堆转储
jcmd process_id GC.heap_dump /path/to/heap_dump.hprof
jcmd process_id GC.heap_dump /path/to/heap_dump.hprof
执行命令会强制执行Full GC
自动转储GC标志
-XX:+HeapDumpOnOutOfMemoryError 默认关闭
-XX:HeapDumpPath=
-XX:HeapDumpAfterFullGC
-XX:HeapDumpBeforeFullGC
对象的浅大小,保留大小和深大小
浅大小:
指对象本身的大小。如果一个对象包含指向另一个对象的引用,那么浅大小包含引用所占4-8个字节,不包含目标对象的大小
深大小:
包含所引用对象的大小。
深大小和保留大小的区别在于其引用的对象是否是共享的。
内存溢出错误 JVM out-of-memory
jvm没有可用的原生内存
元空间内存不足
java堆本身内存不足,对于既定大小堆则无法创建额外的对象
jvm花了太多时间执行GC
原生内存溢出
线程栈的原生内存耗尽异常日志
Exception in thread “main” java.lang.OutOfMemoryError:
unable to create new native thread
也可能是操作系统ulimit -u限制数量超出后异常
元空间内存溢出
Exception in thread “main” java.lang.OutOfMemoryError: Metaspace
jvm元空间的原生内存耗尽,元空间默认是不限制大小。
1.如果设置了大小可能会出现元空间原生内存溢出
2.设计到类加载器的内存泄漏,发生在动态加载类的服务中
堆内存溢出
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
jvm不会退出,异常只影响了单个线程,该线程的线程处理器会输出栈轨迹,然后该线程会退出
如果希望JVM在堆内存溢出后退出使用
-XX:+ExitOnOutOfMemoryError 默认关闭
达到GC开销限制
Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded
在FullGC中花费时间超过了-XX:GCTimeLimit=N的值,默认98
在FullGC中内存量少于-XX:GCTimeLimit=N的值。默认2
相关文章:
java性能分析-堆内存最佳实践-堆分析
堆内存最佳实践 优化垃圾回收器标志参数很重要但是采用更好的编程实践获得更大的性能提升 1.谨慎的创建对象并尽快的丢弃,是更好的内存是提高gc更好的方法 2.频繁创建某种类型的对象会导致整体的性能变差 对象复用设计 线程局部变量 每个线程中创建一个局部变量…...
3月8号作业
题目:题目一:vmlinux可执行文件如何产生题目二:整理内核编译流程:uImage,zImage,Image,vmlinux之间的关系答案一:在内核源码目录下vi Makefile,搜索vmlinux目标,vmlinux: scripts/li…...
Flink相关介绍
简介 Flink的定位是:Apache Flink是一个框架和分布式处理引擎,如图所示,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境运行,以内存执行速度和任意规模来执行计算。 Flink 框架处理流程应用场景 1、电…...
Java 8 排序
今天分享 Java 8 进行排序的 10 个姿势,其实就是把 Java 8 中的 Lambda、Stream、方法引用等知识点串起来 传统排序 现在有一个 List 集合: public static List<User> LIST new ArrayList() {{add(new User("Lisa", 23));add(new Us…...
Blazor_WASM之4:路由
Blazor_WASM之4:路由 路由模板 通过 Router组件可在 Blazor 应用中路由到 Razor 组件。 Router 组件在 Blazor 应用的 App 组件中使用。App组件模板如下 <Router AppAssembly"typeof(Program).Assembly"><Found Context"routeData"…...
对Vue响应式的理解
1. 啥是响应式? (1).所谓的数据响应式就是能够使数据变化可以被检测到并且对这种变化做出响应式的机制 2. 为什么vue需要响应式? (1).MVVM框架中要解决的核心问题数据驱动视图,数据的改变引起视图的更新ÿ…...
磁盘阵列Raid探讨
最近公司买服务器,顺便了解一下服务器配置方面的问题 以下讨论的都是入门级服务器配置,全部是主观意见,没有任何科学依据,欢迎大家讨论 Raid0,Raid1,Raid10,Raid5,Raid6(Raid5热备)…...
基于MyBatis依次、批量、分页增删改查
我们知道处理数据有三种思路:依次、批量、分页,对应方法如下 依次处理:在 Java 里面写 for 循环,依次使用 SQL 语句,频繁连接断开数据库批量处理:在 MyBatis 里面用 <foreach> 拼接成一条长 SQL 语句…...
Tomcat源码分析-Session源码解析
tomcat session 设计分析 tomcat session 组件图如下所示,其中 Context 对应一个 webapp 应用,每个 webapp 有多个 HttpSessionListener, 并且每个应用的 session 是独立管理的,而 session 的创建、销毁由 Manager 组件完成&…...
常见数据模型
目录 1.1两类数据模型 1.2概念模型 1.3数据模型的组成要素 1.4常见数据模型 层次模型 网状模型 关系模型 数据模型是对现实世界数据特征的抽象,也就是说数据模型是用来描述数据、组织数据和对数据进行操作的。数据模型是数据库系统的核心和基础。 1.1两类数…...
Lesson 8.3 ID3、C4.5 决策树的建模流程 Lesson 8.4 CART 回归树的建模流程与 sklearn 参数详解
文章目录一、ID3 决策树的基本建模流程二、C4.5 决策树的基本建模流程1. 信息值(information value)2. C4.5 的连续变量处理方法三、CART 回归树的基本建模流程1. 数据准备2. 生成备选规则3. 挑选规则4. 进行多轮迭代5. 回归树的预测过程四、CART 回归树…...
阿里云手机短信登录
阿里云短信服务介绍阿里云短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%&…...
Android Camera SDK NDK NDK_vendor介绍
Android Camera JNI NDK NDK_vendor介绍前言主要有哪几种interface?Android SDKCamera API 1Camera API 2小结Android NDKNDK InterfaceNDK Vendor Interface小结Camera VTS Testcase总结Reference前言 本篇博客是想介绍Android camera从application layer到camera…...
SQL基础语句小结
🍎道阻且长,行则将至。🍓 目录 一、SQL概述 1.简介 2.格式语法 3.SQL分类 二、DDL操作数据库 1.创建数据库 2.查询与使用 3.删除数据库 三、DDL:操作表 (1)数据类型 (2)创建表 (3)查询当前数据库的表 (4)删除表 (5)修改表 四、DML…...
管理类书籍推荐
管理类书籍对于每一位想要获得管理能力提升或者实现职业生涯更上一层楼的企业管理者或领导者而言,都是不可或缺的一项重要学习工具。作为管理工作从事者的职场必需品,一本出色的管理类书籍可以为我们提供大量宝贵的经验与专业建议,从而让管理…...
win10 mingw 调用python
ubuntu调用pythonhttps://blog.csdn.net/qq_39942341/article/details/129333969 我这里mingw是用msys2的 opencv也是msys2装的 安装msys2和opencv可以参考这个https://blog.csdn.net/qq_39942341/article/details/129380197?spm1001.2014.3001.5502 环境变量里加入python路…...
教你使用三种方式写一个最基本的spark程序
当需要处理大规模数据并且需要进行复杂的数据处理时,通常会使用Hadoop生态系统中的Hive和Spark来完成任务。在下面的例子中,我将说明如何使用Spark编写一个程序来处理Hive中的数据,以满足某个特定需求。假设我们有一个Hive表,其中…...
软件设计师错题集
软件设计师错题集一、计算机组成与体系结构1.1 浮点数1.2 Flynn分类法1.3 指令流水线1.4 层次化存储体系1.4.1 程序的局限性1.5 Cache1.6 输入输出技术1.7 总线系统1.8 CRC循环冗余校验码二、数据结构与算法基础2.1 队列与栈2.2 树与二叉树的特殊性2.3 最优二叉树(哈…...
【华为机试真题详解 Python实现】静态扫描最优成本【2023 Q1 | 100分】
文章目录前言题目描述输入描述输出描述示例 1输入:输出:示例 2输入:输出:题目解析参考代码前言 《华为机试真题详解》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的…...
算法刷题总结 (四) 动态规划
算法总结4 动态规划一、动态规划1.1、基础问题11.1.1、509. 斐波那契数列1.1.2、70. 爬楼梯1.1.3、746. 使用最小花费爬楼梯1.2、基础问题21.2.1、62. 不同路径1.2.2、63. 不同路径Ⅱ1.2.3、343. 整数拆分1.2.4、96. 不同的二叉搜索树1.3、背包问题1.3.1、01背包1.3.1.1、单次选…...
Ventoy解决方案:告别重复格式化的万能启动盘制作神器
Ventoy解决方案:告别重复格式化的万能启动盘制作神器 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy Ventoy是一款革命性的开源可启动USB解决方案,通过创新的免格式化技术&…...
博德之门3 2026最新免费下载 一键转存 永久更新 (看到速转存 资源随时走丢)
下载链接 电子角色扮演游戏的范式革新:博德之门3的技术架构与玩法机制剖析 在现代电子游戏工业中,古典角色扮演游戏(CRPG)曾因其高昂的学习门槛与繁复的规则体系,一度被视为分众市场的垂类产品。然而,2023…...
【VibeCoding系列教程01】2026年最狠的职场外挂:我靠“说话“让AI替我加班,同事以为我开了挂
你们发现没有,现在这个世界越来越离谱了。前两天我朋友问我,说老哥,我想做个网站,得学多久?我说,搁以前,你得先学HTML、CSS、JavaScript,再学框架、学部署,顺利的话&…...
如何用嘎嘎降AI处理金融学论文:金融学毕业论文降AI免费完整操作教程
如何用嘎嘎降AI处理金融学论文:金融学毕业论文降AI免费完整操作教程 这篇教程是针对金融学论文降AI教程写的——问得最多的操作细节,都在这里。 主工具:嘎嘎降AI(www.aigcleaner.com),4.8元一篇ÿ…...
华硕笔记本G-Helper显示管理全攻略:从色彩异常到专业校准的5步解决方案
华硕笔记本G-Helper显示管理全攻略:从色彩异常到专业校准的5步解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivob…...
Windows 环境下 NVM 安装与 Node.js 版本管理完全指南
💡 为什么需要 NVM? 作为前端开发者,你是否遇到过这些困扰: 场景痛点新项目要求 Node 20,老项目依赖 Node 16频繁卸载重装,浪费时间团队协作时环境不一致代码在同事电脑上跑不通全局安装的依赖版本冲突升…...
跨平台网络资源下载神器:res-downloader高效抓包实战指南
跨平台网络资源下载神器:res-downloader高效抓包实战指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在当今数…...
Gopher360:如何用游戏手柄轻松控制您的Windows电脑?免费开源控制器映射工具完整指南
Gopher360:如何用游戏手柄轻松控制您的Windows电脑?免费开源控制器映射工具完整指南 【免费下载链接】Gopher360 Gopher360 is a free zero-config app that instantly turns your Xbox 360, Xbox One, or even DualShock controller into a mouse and k…...
【限时解密】全球仅12家旅游公司跑通的AI Agent冷启动模型:含私有知识库构建SOP
更多请点击: https://codechina.net 第一章:【限时解密】全球仅12家旅游公司跑通的AI Agent冷启动模型:含私有知识库构建SOP 在旅游行业AI落地实践中,“冷启动难”长期制约Agent规模化部署——93%的试点项目因知识断层、意图歧义…...
为什么82%的保险AI Agent项目卡在POC阶段?一线技术总监首度公开6个致命设计盲区
更多请点击: https://codechina.net 第一章:为什么82%的保险AI Agent项目卡在POC阶段? 保险行业正加速拥抱AI Agent技术,但据2024年《亚太保险科技落地白皮书》统计,82%的AI Agent项目在概念验证(POC&…...
