Java 程序该怎么优化?(命令篇)

大学计算 - NumPy库的矩阵运算 实训答案 本文介绍了三个NumPy矩阵操作的实验练习。第一关练习ndarray类型操作,包括矩阵构造、元素平方和计算、矩阵乘积运算和逆矩阵行列式计算;第二关针对matrix类型,涉及绝对值最大值获取、特定矩阵乘积运算和转置矩阵特征值计算;第三关实现Moore-Penrose伪逆矩阵计算,并与NumPy内置pinv函数结果比较误差。实验涵盖了NumPy核心矩阵操作,展示了从基础运算到高级矩阵分解的应用,帮助掌握科学计算中的矩阵处理技巧。 阅读详情

灵魂拷问,JDK 提供的命令,除了 java、javac,你还用过哪些命令呢?

灵魂再拷问,若你写的 Java 程序,出现了性能问题,该怎么去排查呢?

Java 作为编程语言中的战斗机,JDK 默认已经为我们提供了很多排查问题的工具,接下来就逐一认识认识。

1. jps

jps 命令,可以列出系统中所有运行 Java 进程,并可以查看 Java 进程的启动类、传入参数以及 JVM 参数等信息。

例如,在控制台输入 jps -lmv 命令,效果如下(截取部分内容)。

很显然,jps 背后是一个 Java 程序,列出了完整的类路径、传给 main 方法的参数,以及 JVM 的参数。

为了方便了解、查阅,对 jps 命令的参数进行大致的梳理。

另外,不要大惊小怪,jps 以及下面要提到的 JDK 的排查工具,本质都是 Java 程序。

2. jstat

jstat 命令,用于查看 Java 进程的堆使用情况以及 GC 情况。

例如,输出 Java 进程 90961 的类加载相关信息,每秒钟统计一次信息,一共输出 3 次。

控制台输入命令:jstat -class 90961 1000 3,效果如下。

各参数的含义,依次如下:
Loaded 表示载入了类的数量
Bytes 表示载入类的合计大小
Unloaded 表示卸载类的数量
Bytes 表示卸载类的大小
Time 表示在加载和卸载类上所花的时间

例如,显示 GC 相关的堆信息。

控制台输入命令:jstat -gc 90961,效果如下。

各参数的含义,依次如下:
S0C:s0(from)的大小,单位 KB。
S1C:s1(from)的大小,单位 KB。
S0U:s0(from)已使用的空间,单位 KB。
S1U:s1(from)已使用的空间,单位 KB。
EC:eden 区的大小,单位 KB。
EU:eden 区的使用空间,单位 KB。
OC:老年代大小,单位 KB。
OU:老年代已经使用的空间,单位 KB。
PC:永久区大小,单位 KB。
PU:永久区使用空间,单位 KB。
YGC:新生代 GC 次数。
YGCT:新生代 GC 耗时。
FGC:Full GC 次数。
FGCT:Full GC 耗时。
GCT:GC 总耗时。

例如,显示最近一次 GC 的原因及当前 GC 的原因。

控制台输入命令:jstat -gccause 90961,效果如下。

参数含义解释:
LGCC:上次 GC 的原因。
GCC:当前 GC 的原因。

另外,为了方便了解、查阅,对 jstat 命令的参数进行大致的梳理。

3. jinfo

jinfo 命令,可以帮我们查看正在运行的 Java 进程的扩展参数,并支持在运行时修改部分参数;可以很方便地帮我们找到 JVM 参数的当前值。


例如,查看 Java 进程 90961 是否开启打印 GC 详细信息。

命令:jinfo -flag PrintGCDetails  90961

例如,打开 Java 进程 90961 的 PrintGCDetails 开关。

命令:jinfo -flag +PrintGCDetails 90961

例如,关闭 Java 进程 90961 的 PrintGCDetails 开关。

命令:jinfo -flag -PrintGCDetails 90961

使用比较简单,就不贴效果啦。

另外,为了方便了解、查阅,对 jinfo 命令的参数也进行大致的梳理。

4. jmap

jmap 命令,可以帮我们生成 Java 进程的堆快照和对象的统计信息。

例如,生成 PID 为 90961 的 Java 进程的对象统计信息,并输出到 yyxj.txt 文件中。

控制台输入命令:jmap -histo 90961 > yyxj.txt,打开文件效果如下。

例如,生成 PID 为 90961 的 Java 进程的当前堆快照,输出到 heap.hprof 文件中。

命令:jmap -dump:format=b,file=heap.hprof 90961

对于输出的 heap.hprof 快照文件,可以使用 jhat、VisualVM 等工具打开查看。采用 VisualVM 工具查看,效果如下。

5. jhat

jhat 命令,用于分析 Java 程序的堆快照内容,并且在分析完成之后,启动一个 HTTP 服务,让我们可以通过浏览器查看 Java 堆快照信息。

例如,采用 jhat 分析上一步中 jmap 输出的堆快照文件。

输入命令:jhat  heap.hprof,效果如下。

浏览器访问 http://127.0.0.1:7000,一探究竟。

另外,唯恐堆快照会比较大,jhat 还支持 OQL 语句查询堆快照信息,闲暇之余可参考帮助手册 http://127.0.0.1:7000/oqlhelp/ 进行深入了解。

6. jstack

jstack 命令,可以帮助我们导出 Java 程序的线程堆栈,并自动帮我们进行死锁检查,并输出找到的死锁信息。

例如,把 PID 为 92760 的 Java 进程的线程堆栈信息,输出保存到文件中。

命令:jstack -l 92760 > deadlock.txt,打开 deadlock.txt,进程的内部细节,一览无余,那么我们很容易,就能找到死锁。

7. 其它

本次提到的这些命令,建议有时间实操一遍,因为纸上得来终觉浅,绝知此事要躬行。

JDK 提供的排查问题的命令还有很多,时间关系,本次就不再一一列举。

后续会进行实战分析,看看如何把这些命令组合起来,去打一套好的组合拳出来,敬请期待。

推荐阅读:

Java 程序该怎么优化?技巧篇

程序员写出这样的代码,能不挨骂吗?

R语言 地理加权随机森林(GWRFC ) 随机森林可以产生高准确度的分类器,被广泛用于解决模式识别问题。然而,随机森林赋予每个决策树相同的权重,这在一定程度上降低了整个分类器的性能。该算法引入二次训练过程,提高分类正确率高目前,鲜有中文文章介绍GWRFC的技术文档,作者想使用该方法时会遇到重重困难,因此有必要利用R来建模,通过流程演示,供读者参阅。............ 阅读详情

相关推荐

使用 Wireshark 分析 PPPoE 流量中的 BRAS 名称 AC-Name

客户端发出广播请求,寻找 PPPoE 服务器。: BRAS 服务器响应 PADI 请求,提供服务并包含AC-Name。: 客户端选择一个 BRAS 并发起连接请求。: BRAS 确认连接并分配会话 ID。在这些阶段中,AC-Name是 BRAS 提供的一个关键字段,用于标识服务器名称。

caca_66的博客 2066

编写高效的Java代码:常用的优化技巧【一】

代码结构优化是提高Java程序性能的一种重要方式。代码结构的优化包括优化算法、数据结构和设计模式等。

小易 1712

WSL Ubuntu20 通过1Panel配置SSH服务的完整避坑指南

本文详细介绍了在WSL Ubuntu20环境下通过1Panel配置SSH服务的完整指南,包括环境准备、SSH服务安装与基础配置、1Panel中的SSH管理技巧以及连接测试与故障排查。特别针对WSL特性提供了避坑建议,如IP动态变化处理、SSH服务初始化配置等关键步骤,帮助用户高效搭建稳定的SSH服务环境。

weixin_29239279的博客 414

java开发——程序性能的优化方法

jvm(Java Virtual Machine),java虚拟机Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。jvm的内存模型:堆的垃圾回收分区:

weixin_52115456的博客 2589

【STM32学习】(29)STM32实现595驱动三个数码管(标准库和HAL库实现)

我选用的单片机型号为:STM32F103系列 74LS595是一个串转并行输出的芯片,它能为单片机节省很多的IO口,应用场景广泛。 现要求三个数码管动态显示,常规设计都是并行实现,需要8个IO数据口,然后还需要3个IO片选数码管接口,这样大大占用了IO口,导致连接的外设变少。因此我们引入74LS595芯片。电路设计如下: 只需要三个共阴极数码管与三个595芯片级联即可完成,通过RCLK,SCK,SER三个IO即可完成对数码管的动态控制并显示。电路焊接的实物图如下: 要求完成功能:实现数.

XiaoCaiDaYong的博客 8264

解决VNC Viewer连接Ubuntu桌面异常:从灰屏到完整菜单栏的实战指南

本文详细解析了使用VNC Viewer连接Ubuntu桌面时出现灰屏或菜单栏缺失的常见原因及解决方案。从桌面环境冲突到配置文件错误,提供了彻底清理系统残留配置、重新安装纯净桌面环境、优化xstartup文件配置等实战步骤,帮助用户快速恢复完整的远程桌面体验。

weixin_30892037的博客 82

Java程序性能优化技巧

假设有表达式 a,b,c 进行布尔运算“a&&b&&c” ,根据逻辑与的特点,只要在整个布尔表达式中有一项返回false,整个表达式就返回false,因此,当表达式a为false时,该表达式将立即返回 false ,而不会再去计算表达式b 和c。这里不得不提Java只有值传递了,关于这点,我的理解是基本数据类型引用的是值,普通对象引用的也是值,不过这个普通对象引用的值其实是一个对象的地址。在我的机器上,前者耗时5444ms,后者耗时3514ms,相差2s左右,可见,提取重复的操作是相当有意义的。

2301_78064339的博客 1795

华为OD机试真题 新系统 【社交网络相同爱好好友查询】

华为od机试真题 新系统【社交网络相同爱好好友查询】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试真题【社交网络相同爱好好友查询】多语言题解实现。

qq_45776114的博客 1336

掌握这35个 Java 优化小技巧,让你代码水平提升

代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。代码优化的目标是减小代码的体积。

奔走的蚂蚁的博客 3000

基于Qt C++开发一款国产化的福昕风格PDF编辑工具

QString text = QInputDialog::getText(this, "文本批注", "输入批注内容:", QLineEdit::Normal, "", &ok);QString savePath = QFileDialog::getSaveFileName(this, "保存加密PDF", "", "PDF文件 (*.pdf)");QAction* zoomInAct = new QAction(QIcon::fromTheme("zoom-in"), "放大", this);

寒寒豆豆软件公司的博客 236

【AI】在RK3576上,使用RKNN实现MeloTTS(文本转语音)

在瑞芯微的RK3576上实现TTS(文本转语音)功能,使用CPU实现时,几乎把CPU资源全部耗尽,没有实用价值。通过将MeloTTS转为onnx,再转为RKNN,来使用RK3576的NPU硬件加速,成功实现TTS。

郭老二 563

如何优化 Java 应用的性能

Java 应用的性能优化涉及多个层面,包括代码优化、JVM 调优、数据库优化和并发优化等。通过细致地分析应用中的瓶颈,并采取针对性的优化措施,能够大大提升系统的响应速度和处理能力。如果你正在开发高性能的 Java 应用,建议定期使用性能分析工具进行监控,及时发现并解决性能问题。同时,不要忽视基础设施层面的优化,如数据库索引、缓存使用和多线程/异步编程等。通过上述优化方法,你可以有效提升 Java 应用的性能,让你的系统更加高效、稳定,并能够应对更高的负载。

m0_54187478的博客 2772

实战落地!Python抓取股票历史数据:开盘/收盘/成交量全维度爬取(附数据清洗+可视化)

股票历史数据抓取的核心是“数据准确性+完整性”,网页爬取适合小批量、个性化需求,API调用适合批量、标准化需求。多市场数据抓取:适配港股(00700.HK)、美股(AAPL)的抓取逻辑;高频数据抓取:抓取分钟级、小时级行情数据,用于短线量化策略;财务数据扩展:抓取市盈率、市净率、净利润等财务指标,结合价格数据做基本面分析;量化策略回测:将清洗后的数据接入Backtrader、VNPY等量化框架,验证策略有效性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1740

如何优化java_Java 程序该怎么优化?(命令篇)

灵魂拷问,JDK 提供的命令,除了 java、javac,你还用过哪些命令呢?灵魂再拷问,若你写的 Java 程序,出现了性能问题,该怎么去排查呢?Java 作为编程语言中的战斗机,JDK 默认已经为我们提供了很多排查问题的工具,接下来就逐一认识认识。1.jpsjps 命令,可以列出系统中所有运行 Java 进程,并可以查看 Java 进程的启动类、传入参数以及 JVM 参数等信息。例如,在控制台...

weixin_42567752的博客 171

计算机控制技术及应用

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

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

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

Java 程序该怎么优化?(技巧篇)

搬砖者:为什么程序总是那么慢?它现在到底在干什么?时间都花到哪里去了?面试官:简单谈谈 Java 程序性能优化?1.字符串处理优化,乃优化之源。研发过程...

一猿小讲 1788

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java 程序该怎么优化?(工具篇)

程序员:为什么程序总是那么慢?时间都花到哪里去了?面试官:若你写的 Java 程序,出现了性能问题,该怎么去排查呢?工欲善其事必先利其器,为你呈上一箩筐...

一猿小讲 1153

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java 程序该怎么优化?(实战篇)

面试官:出现了性能问题,该怎么去排查呢?程序猿:接口响应那么慢,时间都花到哪里去了?运维喵:为什么你的应用跑着跑着,CPU 就接近 100%?分享一些真...

一猿小讲 1719

java怎么优化内存占用_Java 程序该怎么优化?(工具篇)

程序员:为什么程序总是那么慢?时间都花到哪里去了?面试官:若你写的 Java 程序,出现了性能问题,该怎么去排查呢?工欲善其事必先利其器,为你呈上一箩筐性能优化工具,必有一款满足你,废话不多说,直奔主题。1.hprof 工具hprof 工具是通过织入监控代码,来对 Java 程序进行监控的一款工具。可以监控 Java 程序在运行时占用的 CPU,及统计堆内存使用等。例如:每隔 10 毫秒采样 C...

weixin_30938297的博客 909

java优化_Java 程序该怎么优化?(技巧篇)

搬砖者:为什么程序总是那么慢?它现在到底在干什么?时间都花到哪里去了?面试官:简单谈谈 Java 程序性能优化?1.字符串处理优化,乃优化之源。研发过程中,String 的 API 用的应该是最多,创建 String 对象,以及字符串分割处理那是常有的事儿。1.1.字符串分割,谁更胜一筹?字符串分割,常用的方式有哪些?哪种方式好一些?方式一,经常用 String 提供的 split() 方法来满足...

weixin_33588445的博客 537

Java 程序该怎么优化?(技巧篇)(转)

搬砖者:为什么程序总是那么慢?它现在到底在干什么?时间都花到哪里去了? 面试官:简单谈谈 Java 程序性能优化? 1. 字符串处理优化,乃优化之源。 研发过程中,String 的 API 用的应该是最多,创建 String 对象,以及字符串分割处理那是常有的事儿。 1.1.字符串分割,谁更胜一筹? 字符串分割,常用的方式有哪些?哪种方式好一些? 方式一,经常用 String 提供的 split() 方法来满足业务需求。 代码模拟了一些数据,然后程序跑起来,花费大约 3000 ...

V_S1r的博客 341

java程序调优_Java 程序该怎么优化?(技巧篇)

搬砖者:为什么程序总是那么慢?它现在到底在干什么?时间都花到哪里去了?面试官:简单谈谈 Java 程序性能优化?1.字符串处理优化,乃优化之源。研发过程中,String 的 API 用的应该是最多,创建 String 对象,以及字符串分割处理那是常有的事儿。1.1.字符串分割,谁更胜一筹?字符串分割,常用的方式有哪些?哪种方式好一些?方式一,经常用 String 提供的 split() 方法来满足...

weixin_39797780的博客 122

控制台怎么查看错误的详细信息_Java 程序该怎么优化?命令篇

灵魂拷问,JDK 提供的命令,除了 java、javac,你还用过哪些命令呢?灵魂再拷问,若你写的 Java 程序,出现了性能问题,该怎么去排查呢?Java 作为编程语言中的战斗机,JDK 默认已经为我们提供了很多排查问题的工具,接下来就逐一认识认识。1. jpsjps 命令,可以列出系统中所有运行 Java 进程,并可以查看 Java 进程的启动类、传入参数以及 JVM 参数等信息。例如,在控制...

weixin_31969181的博客 553

java代码优化工具有哪些_Java 程序该怎么优化?(工具篇)

程序员:为什么程序总是那么慢?时间都花到哪里去了?面试官:若你写的 Java 程序,出现了性能问题,该怎么去排查呢?工欲善其事必先利其器,为你呈上一箩筐性能优化工具,必有一款满足你,废话不多说,直奔主题。1.hprof 工具hprof 工具是通过织入监控代码,来对 Java 程序进行监控的一款工具。可以监控 Java 程序在运行时占用的 CPU,及统计堆内存使用等。例如:每隔 10 毫秒采样 CP...

weixin_32237761的博客 852

java输出单选框被选信息_Java 程序该怎么优化?命令篇

灵魂拷问,JDK 提供的命令,除了 java、javac,你还用过哪些命令呢?灵魂再拷问,若你写的 Java 程序,出现了性能问题,该怎么去排查呢?Java 作为编程语言中的战斗机,JDK 默认已经为我们提供了很多排查问题的工具,接下来就逐一认识认识。1. jpsjps 命令,可以列出系统中所有运行 Java 进程,并可以查看 Java 进程的启动类、传入参数以及 JVM 参数等信息。例如,在控制...

weixin_39867208的博客 227

Java 程序该怎么优化?工具篇

Java 程序该怎么优化?工具篇 程序员:为什么程序总是那么慢?时间都花到哪里去了? 面试官:若你写的 Java 程序,出现了性能问题,该怎么去排查呢? 工欲善其事必先利其器,为你呈上一箩筐性能优化工具,必有一款满足你,废话不多说,直奔主题。 1. hprof 工具 hprof 工具是通过织入监控代码,来对 Java 程序进行监控的一款工具。可以监控 Java 程序在运行时占用的 CPU,及统...

geomon的博客 190

java工具软件怎么写_Java 程序该怎么优化?(工具篇)

程序员:为什么程序总是那么慢?时间都花到哪里去了?面试官:若你写的 Java 程序,出现了性能问题,该怎么去排查呢?工欲善其事必先利其器,为你呈上一箩筐性能优化工具,必有一款满足你,废话不多说,直奔主题。1.hprof 工具hprof 工具是通过织入监控代码,来对 Java 程序进行监控的一款工具。可以监控 Java 程序在运行时占用的 CPU,及统计堆内存使用等。例如:每隔 10 毫秒采样 CP...

weixin_30418225的博客 115
上一篇: Java 程序该怎么优化?(技巧篇)
下一篇: Java 程序该怎么优化?(工具篇)
一猿小讲
博客等级 码龄15年 294粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值