JVM性能调优

java 如何跨平台,如何一次编译到处执行

是由于java在不同的jvm上编译,jvm在软件层面屏蔽不同操作系统在底层硬件与指令上的区别。

jvm 包括

在这里插入图片描述
new 的对象都是放在堆中
栈,给线程单独使用(线程私有),存储一个一个栈帧(存储局部变量)
给方法分配一个栈帧,放方法自己的局部变量 一个方法对应一个栈帧内存,方法结束,栈帧销毁。
栈帧由 局部变量表(局部变量(对象的话存的是对象在堆中的内存地址),还有其索引)、操作数栈(操作的 加载到操作数栈)、动态链接(把一些符号引用转换为直接引用 类名方法名都是符号引用 通过符号引用找到直接引用的位置(方法的话就是方法区域的内存的地址))、方法出口(方法返回)组成。
程序计数器(线程私有),马上要执行的一行代码的行号或者位置(方法区的内存地址)(存在原因 多线程安全,被另一个线程抢占了 重新回到本线程时怎么知道我执行到那里了)
类通过类加载子系统 主要将类加载到方法区,字节码执行引擎主要执行方法区里面的代码,程序计数器的值是字节码执行引擎动态修改的。
方法区 1.8之前 持久代 永久代 1.8后元空间 存放常量+静态变量+类信息
本地方法栈:存储 native 修饰的本地方法 (非java 语言实现)
在这里插入图片描述
字节码执行引擎 垃圾收集 Eden区满了 触发minor gc 有引用的复制到s区中的一个 其他杀掉
分代年龄大于15进入老年区 老年区满了 出发full gc 如果老年代满了垃圾无法回收 造成OOM(OutOfMemoryError)

调优

cmd jvisualvm(jdk 中包含的 全局配置) 监控所有线程的jvm

使用arthas

查死锁
thread -b
查线程
thread 线程好
面板
dashboard
反编译
jad 加类全名
通过arthas 修改内存变量值
ognl 命令

目的

减少STW(STOP THE WORD 停止掉整个事件),在垃圾收集时会触发STW 将所有用户线程全部暂停。

为什么设置STW STW 并不好

如果不设置STW 则线程正在运行过程中,触发GC时,假设在GC过程中,线程执行结束了,所以该线程变为垃圾对象了,所以造成空间浪费,回收麻烦。

优化

调整各个区域的配比 尽可能在年轻代干掉垃圾 尽量不发生full gc 评估每秒的空间
什么时候进入老年代
年龄
大对象
超过幸存区50% 最大年龄对象放入老年代
eden 区如果比较大 则minio gc 消耗时间比较长 导致请求慢重复发送(这个要调优 需要垃圾收集器调优)
选择合适的垃圾回收器

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java-进程调度算法

文章目录 为什么要设置进程调度算法?分类1. 先进先出(FIFO)算法优缺点FIFO代码示例 2. 短作业优先(SJF)算法优缺点示例代码 3. 优先级算法(Priority scheduling)优缺点示例代码 4. 时间片轮转算…

Midjourney API 国内申请及对接方式

在人工智能绘图领域,想必大家听说过 Midjourney 的大名吧! Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作,只要简单输入绘图指令,这个神奇的工具就能在瞬间为我们呈现出对应的图像。无论是任何物体还是任何风…

Docker容器与虚拟化技术:Docker consul 实现服务注册与发现

目录 一、理论 1.Docker consul 二、实验 1.consul部署 2. consul-template部署 三、总结 一、理论 1.Docker consul (1)服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性&…

解决Linux虚拟机IP无法显示的问题

目录 问题: 两种解决方案,供大家选择使用哦。 第一种解决办法: 第二种解决办法: 1、查看ens33网卡的配置 2、修改文件 扩展: 问题: Linux命令 ip a 查看ip时,无法显示IP的解决办法。 两…

lnmp(docker)

1. 建立工作目录 [rootdocker ~]# mkdir /opt/nginx [rootdocker ~]# cd /opt/nginx [rootdocker nginx]# rz -E rz waiting to receive. #上传 nginx 安装包 nginx-1.12.0.tar.gz[rootdocker nginx]# rz -E rz waiting to receive. #上传 wordpress 服务包 wordpress-4.9.4-z…

vscode远程调试

安装ssh 在vscode扩展插件搜索remote-ssh安装 如果连接失败,出现 Resolver error: Error: XHR failedscode 报错,可以看这篇帖子vscode ssh: Resolver error: Error: XHR failedscode错误_阿伟跑呀的博客-CSDN博客 添加好后点击左上角的加号&#xff0…

Python功能制作之简单的音乐播放器

需要导入的库: pip install PyQt5 源码: import os from PyQt5.QtCore import Qt, QUrl from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent from PyQt5.QtWidgets import QApplication, QMainWind…

剪枝基础与实战(1): 概述

本文介绍基于L1正则化的剪枝原理,并以VGG网络进行实战说明。将从零详细介绍模型训练、稀疏化、剪枝、finetune的全过程,提供详细的源码及说明,有助于对剪枝的熟练掌握,后续也会对yolov8进行剪枝的介绍。 论文: Learning Efficient Convolutional Networks through Network …

激活函数总结(十七):激活函数补充(PELU、Phish)

激活函数总结(十七):激活函数补充 1 引言2 激活函数2.1 Parametric Exponential Linear Unit(PELU)激活函数2.2 Phish激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、…

SAP S/4HANA 2022:MRP Live 和 Classic MRP新的增强BADI

翻译一篇,原文在SAP BLOG中如下: 目录 前言通过 BADIs 操作 MRP 元素新的 BadI PPH_SUPPLY_DEMAND_LISTBADI PPH_SUPPLY_DEMAND_LIST 的示例实现结论 前言 SAP S/4HANA 引入了新的 BADI PPH_SUPPLY_DEMAND_LIST,它允许我们在MRP Live 和 C…

2023.8.19-2023.8.XX 周报【人脸3D+虚拟服装方向基础调研-Cycle Diffusion\Diffusion-GAN\】更新中

学习目标 1. 这篇是做diffusion和gan结合的,可以参照一下看看能不能做cyclegan的形式,同时也可以调研一下有没有人follow这篇论文做了类似cyclegan的事情 Diffusion-GAN论文精读https://arxiv.org/abs/2206.02262 2. https://arxiv.org/abs/2212.06…

[足式机器人]Part3机构运动微分几何学分析与综合Ch03-1 空间约束曲线与约束曲面微分几何学——【读书笔记】

本文仅供学习使用 本文参考: 《机构运动微分几何学分析与综合》-王德伦、汪伟 《微分几何》吴大任 Ch01-4 平面运动微分几何学 3.1 空间曲线微分几何学概述3.1.1 矢量表示3.1.2 Frenet标架 连杆机构中的连杆与连架杆构成运动副,该运动副元素的特征点或特…

通过cpolar在外远程查看家里内网监控

通过cpolar在外远程查看家里内网监控 文章目录 通过cpolar在外远程查看家里内网监控前言1. 在cpolar官网预留一个空白隧道2. 完成空白数据隧道,生成地址3. 设置空白隧道的出口4. 空白数据隧道的出口设置5. 获取公网地址6. 打开本地电脑“远程桌面”7. 打开Windows自…

三星Galaxy S23与iPhone 15的对比分析:谁会胜出?

三星Galaxy S23与iPhone 15的对决将于下个月进入高潮,这将是今年智能手机中最大的一场较量。毕竟,这是两家领先的移动设备制造商的旗舰手机。他们的手机的比较将在很大程度上决定谁能获得最佳手机的称号。 我们已经知道有利于三星Galaxy S23的情况,该产品自春季以来一直在推…

算法 | 活用双指针完成复写零操作

Problem: 1089. 复写零 文章目录 题目解析算法原理分析找到最后一个复写的位置从后往前进行复写操作 代码展示 题目解析 首先我们来分析一下本题的题目意思 可以看到题目中给到了一个数组,意思是让我们将数组中的零元素都复写一遍,然后将其余的元素向后平…

jmeter-results-detail-report_new.xsl文件设置dateReport

<!-- Defined parameters (overrideable) <td bgcolor"#ff00ff"> --> <xsl:param name"showData" select"y"/> <xsl:param name"titleReport" select"测试报告"/> <xsl:param name&…

从零实现深度学习框架——Transformer从菜鸟到高手(二)

引言 &#x1f4a1;本文为&#x1f517;[从零实现深度学习框架]系列文章内部限免文章&#xff0c;更多限免文章见 &#x1f517;专栏目录。 本着“凡我不能创造的&#xff0c;我就不能理解”的思想&#xff0c;系列文章会基于纯Python和NumPy从零创建自己的类PyTorch深度学习框…

Electron学习2 使用Electron-vue和Vuetify UI库

Electron学习2 使用Electron-vue和Vuetify UI库 一、Electron-vue简介二、安装yarn三、创建Electron-vue项目1. 关于 electron-builder2. 安装脚手架3. 运行4. 打包应用程序 四、background.js说明1. 引入模块和依赖&#xff1a;2. 注册协议&#xff1a;3. 创建窗口函数&#x…

通过springMVC拦截器进行后台统一校验

通过springMVC拦截器统一解析token&#xff0c;判断是否有效。可以对请求进行前置或后置处理 /*** 配置拦截器*/ public class TokenInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,…

Commonjs和Es6语法规范的理解

ES6 module和CommonJS到底有什么区别&#xff1f; “ES6 module是编译时加载&#xff0c;输出的是接口&#xff0c;CommonJS运行时加载&#xff0c;加载的是一个对象” 这里的“编译时”是什么意思&#xff1f;和运行时有什么区别&#xff1f;“接口”又是什么意思&#xff1f;…