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个组成部分
采样电路的使用实际上是电路的一个闭环控制过程,也可以理解为一个负反馈过程,采集的信号被传送到主控制芯片进行调整。今天就来为您介绍一下采样电路的三个组成部分分析!一起来看看吧! 这里的采样实际上分为电流采样、电压采样、…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
