JVM调优
JVM调优-VisualVm
- VisualVm/ Jconsule远程连接
- 第一种方式
- 第二种方式:
- java 11开启远程GC连接
- 如果还连不上考虑防火墙拦截了端口firewall-cmd --list-all,查看一下并暴露对应端口
- 连接配置
- VisualVm界面简介
- 采集GC信息的一些命令
- 垃圾回收器切换
VisualVm/ Jconsule远程连接
引用自:远程连接采录
首先了解两个概念:
Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)
Java JMX: Java管理扩展,即Java JMX(Java Management Extensions)
参数解析:
-Djava.rmi.server.hostname=远程服务器ip //配置远程调用主机地址,即jar包运行所在系统的IP地址,不配置则默认使用hosts文件中的值
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=10034 //指定JMX的运行端口,jconsole需要对接的既是该端口
-Dcom.sun.management.jmxremote.ssl=false // 是否允许使用ssl方式接入
-Dcom.sun.management.jmxremote.authenticate=false //是否需要进行身份验证
-Dcom.sun.management.jmxremote.rmi.port=10034-Dcom.sun.management.jmxremote.local.only=true
第一种方式
java -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
-Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.rmi.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:+UseParallelOldGC -XX:+UseParallelGC -XX:+UseAdaptiveSizePolicy -jar xxx.jar
第二种方式:
首先在服务器终端设置环境变量,主要是便于每次启动项目时使用:
export JAVA_OPTS='-Djava.rmi.server.hostname=你的服务器地址(公网ip) -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.rmi.port=8888 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false'
参数和上面一样,就不解释了
导入环境变量后,用命令重新加载配置文件:source /etc/profile;可以直接将export命令写入profile文件最后,在加载文件便可以保持该环境变量一直生效。
切换到你服务器的jvm配置路径:/usr/lib/jvm/…
拷贝jmxremote.password.template文件到jmxremote.pwssword:
添加写入权限:
然后对文件进行修改:vim jmxremote.password
取消最后两行的注释,保存退出。
java 11开启远程GC连接
vim jstatd-all.policy
配置 jstatd-all.policy:
grant codebase "jrt:/jdk.jstatd" {permission java.security.AllPermission;
};
grant codebase "jrt:/jdk.internal.jvmstat" {permission java.security.AllPermission;
};
给jstatd.all.policy文件 执行权限:chmod 777 jstatd.all.policy.
运行命令:./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.1.249参数说明:
-J-Djava.security.policy=jstatd.all.policy =号后面的是文件的绝对路径;
-J-Djava.rmi.server.logCalls=true 打开日志,如果客户端有连接过来的请求,可以监控到,便于排错;
-J-Djava.rmi.server.hostname=192.168.1.xxx 指明本机 hostname 对应的本机地址,确保该地址可以给客户机访问。因为有的服务器 hostname 对应的 ip 不一定是外网能连上的,最好在这里直接明确指定;
-p 9999 指定服务的端口号,默认是1099。可选参数。

如果还连不上考虑防火墙拦截了端口firewall-cmd --list-all,查看一下并暴露对应端口

[root@localhost bin]# firewall-cmd --zone=public --add-port=8889/tcp --permanent
success
[root@localhost bin]# systemctl restart firewalld
[root@localhost bin]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: eth0sources: services: dhcpv6-client sshports: 22/tcp 21/tcp 9092/tcp 3306/tcp 443/tcp 80/tcp 9093/tcp 6379/tcp 9200/tcp 9300/tcp 9094/tcp 8443/tcp 9527/tcp 9091/tcp 9530/tcp 8888/tcp 15672/tcp 5672/tcp 1099/tcp 23/tcp 8889/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: [root@localhost bin]#
netstat -anlp|grep 8888 // 查看端口是否启动
连接配置
启动服务,查看对应的端口是否处于监听状态
netstat -apn | grep java 查看监听的端口



VisualVm界面简介
VisualVM使用
采集GC信息的一些命令
- JConsole, jstat, jinfo, jstack 和 jmap 这些独立的工具,是 Java VisualVM 的一部分。Java VisualVM 通过结合使用这些工具来获取 JVM 的数据信息,进行重新组织,最后以图像的形式进行展示。另外,用户可以通过插件扩展 Java VisualVM 的功能。
jps 虚拟机进程情况jps -l:输出进程号和jar包名称
jstat 虚拟机运行数据jstat -gc pid:监视堆的情况,容量、已用空间、GC时长等jstat -gcutil pid:和-gc差不多,但主要关注已使用空间占总空间的比例可以后缀时间如:jstatd -gcutil pid 5000,则每5S输出一次
jmap 内存映射jmap -heap pid:展示堆详细信息,用了哪种回收器、参数配置、分代情况等jmap -dump:format=b,file=xxx.hprof pid:生成当前时刻堆快照
jstack 堆栈跟踪jstack pid:生成当前时刻线程快照 threaddump
可以将信息输出到指定文件如:jmap -hep pid >/xxx/jmapHeap.txt
垃圾回收器切换
Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)
启用CMS: -XX:+UseConcMarkSweepGC
Parallel Old启用:-XX:+UseParallelOldGC -XX:+UseAdaptiveSizePolicy
+UseParallelGC = 新生代ParallelScavenge + 老年代ParallelOld
+UseParallelOldGC = 同上
-UseParallelOldGC = 新生代ParallelScavenge + 老年代SerialOld
改用并行垃圾回收器
-Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m
-XX:+UseParallelOldGC -XX:+UseParallelGC -XX:+UseAdaptiveSizePolicy
相关文章:
JVM调优
JVM调优-VisualVmVisualVm/ Jconsule远程连接第一种方式第二种方式:java 11开启远程GC连接如果还连不上考虑防火墙拦截了端口firewall-cmd --list-all,查看一下并暴露对应端口连接配置VisualVm界面简介采集GC信息的一些命令垃圾回收器切换VisualVm/ Jconsule远程连接…...
【配电网规划】SOCPR和基于线性离散最优潮流(OPF)模型的配电网规划( DNP )(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
锦正茂EM3电磁铁的技术参数
产品特点: ※U形结构、视野开阔、磁场强度高、磁场强度大小调节方便 ※体积小、重量轻、占空比小、结构紧凑、磁场性能更佳 ※电磁铁的工作气隙调节轻便灵活,极头处设有螺纹,更换极头装卸方便 ※可选配工作间隙刻度指示 ※小气隙时用于铁…...
Go最新版下载 Go1.20版新特性
Go官方正式发布了Go1.20稳定版 该版本依然保持 Go1 兼容性,可以升级到 Go1.20,而不需要做任何代码改动。 可以使用你任何喜欢的方式升级: 比如: go install golang.org/dl/go1.20latest 具体的可以参考官网教程: ht…...
Pywirt:一款基于Python的Windows安全应急响应工具
关于Pywirt Pywirt是一款基于Python开发的网络安全工具,该工具专门针对Windows操作系统设计,可以帮助广大研究人员使用winrm并通过在Windows操作系统上收集各种信息来加快安全事件应急响应的速度。 该工具已在Windows 10操作系统上进行过完整测试。 功…...
KDZD832 智能蓄电池活化仪
一、产品概述 KDZD832 智能蓄电池活化仪(2V-24V 一体机,适用于 2V、6V、12V/24V 蓄电池,以下简称活化仪),是专用于日常维护中对落后蓄电池处理的便携式产品,它具有四种独立的使用方式:电池放电…...
纯css实现loading加载中(多种展现形式)
前言 现如今网页越来越趋近于动画,相信大家平时浏览网页或多或少都能看到一些动画效果,今天我们来做一个有意思的动画效果,纯 css 实现 loading 加载中(多种展现形式),下面一起看看吧。 1. 常规 loading 实…...
【面试题】2023 vue高频面试知识点汇总
一、MVVM原理在Vue2官方文档中没有找到Vue是MVVM的直接证据,但文档有提到:虽然没有完全遵循MVVM模型,但是 Vue 的设计也受到了它的启发,因此在文档中经常会使用vm(ViewModel 的缩写) 这个变量名表示 Vue 实例。为了感受MVVM模型的…...
跨境电商选品重要吗?
选品很重要!跨境电子商务选择的核心要求:优质商品,价格优势,符合跨境销售特点,满足目标海外市场需求,突出自身特色竞争优势。跨境电商是如何选择产品的?这个问题也很流行,应该考虑以…...
SpringBoot
这里写目录标题1.入门程序1.1 spring-boot-starter-parent1.2 启动器1.3 EnableAutoConfiguration(重要)1.4 如何注册多个Controller?1.5 引导类2.完整的SpringBoot项目2.1 启动类2.1.1 创建一个启动类2.1.2 扩展: SpringBootConfiguration2.2 使用配置类定义组件2.3 SpringBo…...
python--turtle
前言 就随便练练,学习一下turtle库的使用 正文 1.语法学习 import turtle #导入库 turtle.showturtle() #画笔显示箭头 turtle.write("我是大帅逼") #写下字符串 turtle.forward(300) …...
NodeJS的后端Express项目部署到Ubuntu服务器,为前端提供API服务
之前参与的web3项目后端是用NodeJS开发的,因为可以共用NPM库,采用的Express框架,第一次弄,记录下大致的部署过程如下: 1、服务器上安装NodeJS sudo apt-get install nodejs 2、安装全局NPM工具,node_mod…...
作为研发如何使用Github Api?
文章目录使用步骤账号创建进行开发者相关设置API操作演示Github API好处推荐的Github API🌟个人主页: 个人主页 🚵♀️个人介绍:每天进步一点点,生活变得好一点点。 📌作为一位开发,不管是非工作的还是工作中的人士&…...
Java volatile学习
面试题: 1、请谈谈你对volatile的理解? volatile是Java虚拟机提供的轻量级的同步机制1.保证可见性2.不保证原子性3.禁止指令重排 2、JMM你谈谈?Java内存模型 3、你在哪些地方用到过volatile?单例模式CAS底层代码 目录 一、概述 1、可见性 2、原子性…...
用神经网络分类上和下
( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 做一个网络,输入为3个点,训练集A,B各有4张图片。让B的4张图片全是0.排列组合A,记录迭代次数平均值的变化。收敛误差为7e-4,每个网络收敛199次。 其中得到一组数据 差值结构 1-A-B 迭代次…...
VS Code 1.75 发布!
欢迎使用 2023 年 1 月版的 Visual Studio Code。希望您喜欢此版本中的许多更新,其中一些主要亮点包括:配置文件、VS Marketplace 签名、辅助功能改进、更轻松地调整多视图大小、树视图搜索历史、新的 Git 命令等等。让我们一起看看吧! 配置文…...
Vue2仿网易云风格音乐播放器(附源码)
Vue2仿网易云风格音乐播放器1、整体效果2、使用技术3、实现内容4、源码5、使用图片1、整体效果 2、使用技术 使用了HTML5 CSS3进行页面布局及美化使用Vue2进行数据渲染与页面交互使用Axios发送http请求获取数据 3、实现内容 实现了搜索歌曲功能,输入歌手或歌曲关…...
Spring相关面试题
文章目录请谈一下你对 spring 的理解?说一下 Spring 的核心是什么?请谈 一下你对 Spring IOC 和 和 AOP 的理解?请说一下 Spring 的 的 Bean 作用域?请谈一下Spring中bean对象的生命周期?Spring中的事务是如何实现的 &…...
操作符详解(上篇)
前言小伙伴们大家好,随着对c的不断学习今天我们将来学习操作符。在初始c语言中也介绍过操作符但也只是点到即可,今天我们将详细了解操作符。操作符分类:算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号…...
采样电路的3个组成部分
采样电路的使用实际上是电路的一个闭环控制过程,也可以理解为一个负反馈过程,采集的信号被传送到主控制芯片进行调整。今天就来为您介绍一下采样电路的三个组成部分分析!一起来看看吧! 这里的采样实际上分为电流采样、电压采样、…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
LeetCode 0386.字典序排数:细心总结条件
【LetMeFly】386.字典序排数:细心总结条件 力扣题目链接:https://leetcode.cn/problems/lexicographical-numbers/ 给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。…...
Caliper 配置文件解析:config.yaml 和 fisco-bcos.json 附加在caliper中执行不同的合约方法
Caliper 配置文件解析:config.yaml 和 fisco-bcos.json Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO…...
RabbitMQ work模型
Work 模型是 RabbitMQ 最基础的消息处理模式,核心思想是 多个消费者竞争消费同一个队列中的消息,适用于任务分发和负载均衡场景。同一个消息只会被一个消费者处理。 当一个消息队列绑定了多个消费者,每个消息消费的个数都是平摊的&a…...
