JVM
文章平均质量分 64
性能调优
不见长安见晨雾
皇上有旨,让太阳站下
展开
-
Java代码是怎么运行的?
将Java程序转换成Java虚拟机所能识别的指令序列,也称Java字节码。之所以这么取名,是因为Java字节码指令的操作码(opcode)被固定为一个字节。Java虚拟机可以由硬件实现,但更为常见的是在各个现有平台(如Windows_x64、Linux_aarch64)上提供软件实现。Java虚拟机将运行时内存区域划分为五个部分,分别为方法区、堆、PC寄存器、Java方法栈和本地方法栈。执行Java代码首先需要将它编译而成的class文件加载到Java虚拟机中。原创 2023-11-09 16:36:55 · 1206 阅读 · 0 评论 -
JMH基本使用
pom.xml <dependencies> <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-core</artifactId> <version>1.23</version> </dependency>原创 2022-03-18 10:09:19 · 504 阅读 · 0 评论 -
JVM命令行监控工具之jinfo
jinfo简介jinfo(Configuration Info for Java),可以查看和调整虚拟机参数。官网地址:https://docs.oracle.com/en/java/javase/11/tools/jinfo.html选项说明no option输出全部的参数和系统属性-flag name输出对应名称的参数-flag[±]name开启或者关闭对应名称的参数,只有被标记为manageable的参数才可以被动态修改-flag name=value原创 2022-03-22 17:32:20 · 201 阅读 · 0 评论 -
MAT简单分析内存溢出问题
模拟内存溢出情况import java.util.ArrayList;import java.util.List;import java.util.UUID;/** * 向List集合中添加100万个字符串,每个字符串由1000个UUID组成。如果程 序能够正常执行,最后打印ok。 */public class TestJvmOutOfMemory { public static void main(String[] args) { List<Object>原创 2022-03-23 11:27:33 · 1013 阅读 · 0 评论 -
Tomcat配置JMX远程连接
第一步:配置tomcat在apache-tomcat-7.0.52/bin下创建setenv.sh文件,添加如下内容,注意下面脚本是一行。JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.原创 2022-03-22 10:00:07 · 1552 阅读 · 0 评论 -
JVM的三种运行参数
JVM的三种参数类型1)标准参数JVM的标准参数,一般都是很稳定的,在未来的JVM版本中不会改变,可以使用java -help检索出所有的标准参数。C:\Users\user>java -help用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfile [args...] (执行 jar 文件)其中选项包括: -d32 使用 3原创 2022-03-23 11:00:13 · 1655 阅读 · 0 评论 -
Java死锁检测的三种方法
方法一:jstack 进程号首先使用jps查看Java进程编号,然后使用jstack查看进程信息,出现下述信息表示出现了死锁。jstack会在最后给出进程的分析信息,表示出现了死锁。方法二:使用图形化工具jconsole.exe第一步:打开jconsole,选择要检测的程序第二步:点击检测死锁检测死锁后,可以看到存在死锁的线程。方法三:使用图形化工具jvisualvm.exe第一步:选择程序,会自动检测死锁在左侧选择要检测的Java程序,右侧会出现红色的字提醒:检测到死锁!。原创 2022-03-18 16:02:34 · 7914 阅读 · 0 评论 -
统计Java进程中的线程状态(jstack+linux)
如何统计Java进程中的线程状态第一步:查看Java进程ID第二步:使用jstack命令dump线程信息,看看pid=45890进程中的线程都是什么状态/usr/local/java/jdk1.8.0_144/bin/jstack 84976 >/opt/test.dump第三步:统计所有线程分别处于什么状态grep java.lang.Thread.State /opt/test.dump | awk '{print $2$3$4$5}' | sort | uniq -c案例:以原创 2022-03-20 12:42:55 · 2830 阅读 · 0 评论 -
jvm打印日志的相关参数
输出日志参数‐XX:+PrintGC 输出GC日志,类似-verbose:gc‐XX:+PrintGCDetails 输出GC的详细日志‐XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)‐XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013‐05‐04T21:53:59.234+0800)‐XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息‐Xloggc:…/logs/gc.log 日志文件的输出路径-Xms3原创 2022-03-24 11:57:37 · 1282 阅读 · 0 评论 -
JVM命令行监控工具之jmap(JVM Memory Map)
jmap简介jmap(JVM Memory Map)一方面可以获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息、类加载信息等。选项作用-dump生成dump文件-finalizerinfo以ClassLoader为统计口径输出永久代的内存状态信息-heap输出整个堆空间的详细信息,包括GC的使用、堆配置信息,以及内存的使用信息等-histo输出堆空间中对象的统计信原创 2022-03-22 19:09:24 · 5729 阅读 · 0 评论 -
CPU利用率过高——如何定位线程信息
CPU占用率飙升,定位线程堆栈信息原创 2022-03-18 11:43:06 · 4986 阅读 · 0 评论 -
JVM命令行监控工具之jhat(Java Heap Analysis Tool)
jhat简介jhat命令与jmap命令搭配使用,用于分析jmap生成的heap dump文件(堆转储快照)。jhat内置了一个微型的HTTP/HTML服务器,对生成的dump文件分析后,可以在浏览器中查看分析结果。使用jhat命令,会启动一个http服务,默认端口7000。注:jhat命令在JDK9、JDK10中已经被删除,官方建议用VisualVM代替。jhat使用jhat /opt/1.hprofselect s from java.lang.String s where s.va原创 2022-03-22 19:35:13 · 7331 阅读 · 0 评论 -
JVM命令行监控工具之jcmd
jcmd简介在JDK1.7以后,Java新增了一个命令行工具jcmd。jcmd是一个多功能的工具,可以用来实现前面除了jstat之外所有命令的功能。比如:用它来导出堆、内存使用、查看Java进程、导出线程信息、执行GC、JVM运行时间等。jcmd拥有jmap的大部分功能,并且在Oracle的官网上也推荐使用jcmd命令代替jmap命令。官网:https://docs.oracle.com/en/java/javase/11/tools/jcmd.html查看进程号(同jps)查看指定的进程适用原创 2022-03-22 20:06:11 · 752 阅读 · 0 评论 -
JVM之垃圾收集器
堆空间的设置默认堆大小默认情况下,初始堆大小:物理内存大小的1/64。最大堆大小:物理内存大小的1/4或1G。参考官方文档:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html建议:通常将-Xms和-Xmx配置成一样的值,目的是为了能够在Java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小,从而提高性能。堆参数设置以及查看方式一:代码查看public class HeapSpace原创 2022-03-23 16:39:45 · 787 阅读 · 0 评论 -
JVM常见运行参数说明
堆栈大小设置 功能 参数 说明 堆栈大小设置 -Xms512m 等价于-XX:InitialHeapSize,设置JVM初始堆内存为512M -Xmx2048m 等价于-XX:MaxHeapSize,设置JVM最大堆内存为2048M -Xss256k 等价于 -XX:ThreadStackSize,设置Java线程堆栈大小 比例设置 -XX:Survi原创 2022-03-23 14:55:20 · 795 阅读 · 0 评论 -
JVM命令行监控工具之jstat(JVM Statistics Monitoring Tool)
jstat简介jstat(JVM Statistics Monitoring Tool):用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。 类型 内容 说明 类装载相关 -class 显示ClassLoader的相关信息:类的装载卸载数量、总空间、类装载消耗的时间等 垃圾回收相关 -gc 显示与GC相关的堆信息。包原创 2022-03-22 15:08:38 · 1207 阅读 · 0 评论 -
JVM图形化工具之Visual VM的简单使用
性能监控:找到占用CPU时间最长的方法分析堆dump原创 2022-03-24 16:07:29 · 271 阅读 · 0 评论