建立网站的市场价格民制作网站价格
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:45
当前位置: 首页 > news >正文
建立网站的市场价格,民制作网站价格,有趣的创意广告,wap是什么意思的缩写文章目录 JDK 中与常用命令行工具jpsjstatjinfojmap导出 dump 文件查看堆内存信息 jstack JVM 可视化分析工具 JDK 中与常用命令行工具 jps 查看当前服务器正在执行的 Java 进程 \( jps 7584 Application 16433 AdminApplication 14209 Jps 5813 Bootstrap 5575 TestApplic… 文章目录 JDK 中与常用命令行工具jpsjstatjinfojmap导出 dump 文件查看堆内存信息 jstack JVM 可视化分析工具 JDK 中与常用命令行工具 jps 查看当前服务器正在执行的 Java 进程 \) jps 7584 Application 16433 AdminApplication 14209 Jps 5813 Bootstrap 5575 TestApplication 7160 Application 6010 Bootstrap 6715 Bootstrap 3981 QuorumPeerMain 6527 jar这里的进程id和操作系统的进程id是一致的。第二列是显示的当前正在执行的 Java 程序的名称。 \( jps -help usage: jps [-help]jps [-q] [-mlvV] [hostid]Definitions:hostid: hostname[:port]l 显示类的完整信息v 显示启动时的 Java 配置选项 jstat 查看当前Java进程的相关信息GC信息、类加载信息、JIT编译信息等 \) jstat -help Usage: jstat -help|-optionsjstat -option [-t] [-hlines] vmid [interval [count]]Definitions:option 通过 -options 可以查看有哪些optionvmid 进程id如果是远程格式如下远程的进程id[hostname[:port]]lines 打印多少行之后再次显示一下表头.interval 打印间隔时间格式为:n[ms|s]count 重复打印的次数如果设置了 interval 而不设置时间则一直打印.-Jflag 将 flag 的值传递给运行时系统.-t 程序执行时长 -hlines 打印多少行之后再次显示一下表头\( jstat -options -class 显示 ClassLoader 的相关信息 -compiler 显示 JIT 编译的信息 -gc 显示 GC 相关信息 -gccapacity 类似 -gc -gccause 显示发生 GC 的原因 -gcmetacapacity -gcnew 新生代信息 -gcnewcapacity 类似于 -gcnew -gcold 老年代信息 -gcoldcapacity 类似于 -gcnew -gcutil -printcompilation 显示 JIT 编译的信息-gc 示例 \) jstat -gc 进程id 1s 100S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 512.0 512.0 128.0 0.0 36864.0 29170.4 152064.0 72123.0 105088.0 99428.9 12416.0 11352.7 920 22.131 4 1.018 23.149S0C幸存者0区的总内存大小 S0U幸存者0区已经使用的内存大小 EC、EU Eden 区的总内存大小和已经使用的内存大小 OC、OU老年代的内存信息 MC、MU元空间的内存信息YGCYoungGC 的次数 YGCTYoungGC 的时间 FGCFGC 的次数 FGCTFGC 的时间 GCT总 GC 的时间jinfo 查看或修改JVM配置参数信息 \( jinfo -help Usage:jinfo [option] pid(to connect to running process)jinfo [option] executable core(to connect to a core file)jinfo [option] [server_id]remote server IP or hostname(to connect to remote debug server)where option is one of:-flag name to print the value of the named VM flag-flag [|-]name to enable or disable the named VM flag-flag namevalue to set the named VM flag to the given value-flags to print VM flags-sysprops to print Java system propertiesno option to print both of the above-h | -help to print this help message示例 \) jinfo -flags 进程id Attaching to process ID 进程id, please wait… Debugger attached successfully. Server compiler detected. JVM version is 25.181-b13 Non-default VM flags: -XX:CICompilerCount3 -XX:InitialHeapSize130023424 -XX:MaxHeapSize2051014656 -XX:MaxNewSize683671552 -XX:MinHeapDeltaBytes524288 -XX:NewSize42991616 -XX:OldSize87031808 -XX:UseCompressedClassPointers -XX:UseCompressedOops -XX:UseParallelGC Command line: jinfo 命令可以动态修改Java 进程配置配置之后立即生效。但并不是所有的选项参数都能修改需要是标记为 manageable 的才能修改。 \( java -XX:PrintFlagsFinal -version | grep manageableintx CMSAbortablePrecleanWaitMillis 100 {manageable}intx CMSTriggerInterval -1 {manageable}intx CMSWaitDuration 2000 {manageable}bool HeapDumpAfterFullGC false {manageable}bool HeapDumpBeforeFullGC false {manageable}bool HeapDumpOnOutOfMemoryError false {manageable}ccstr HeapDumpPath {manageable}uintx MaxHeapFreeRatio 100 {manageable}uintx MinHeapFreeRatio 0 {manageable}bool PrintClassHistogram false {manageable}bool PrintClassHistogramAfterFullGC false {manageable}bool PrintClassHistogramBeforeFullGC false {manageable}bool PrintConcurrentLocks false {manageable}bool PrintGC false {manageable}bool PrintGCDateStamps false {manageable}bool PrintGCDetails false {manageable}bool PrintGCID false {manageable}bool PrintGCTimeStamps false {manageable}注意动态修改职能针对当前的进程当我们的应用重启之后进程其实就变了所以这里的动态修改也就是在线排查或在线调优的时候用一用。 jmap 导出 JVM 内存映射它可以获取 dump 文件还可以获取进程的内存相关信息包括各区域的使用情况等 \) jmap -help Usage:jmap [option] pid(to connect to running process)jmap [option] executable core(to connect to a core file)jmap [option] [server_id]remote server IP or hostname(to connect to remote debug server)where option is one of:none to print same info as Solaris pmap-heap to print java heap summary-histo[:live] to print histogram of java object heap; if the livesuboption is specified, only count live objects-clstats to print class loader statistics-finalizerinfo to print information on objects awaiting finalization-dump:dump-options to dump java heap in hprof binary formatdump-options:live dump only live objects; if not specified,all objects in the heap are dumped.formatb binary formatfilefile dump heap to fileExample: jmap -dump:live,formatb,fileheap.bin pid-F force. Use with -dump:dump-options pid or -histoto force a heap dump or histogram when pid does notrespond. The live suboption is not supportedin this mode.-h | -help to print this help message-Jflag to pass flag directly to the runtime system导出 dump 文件
jmap -dump:formatb,filefileName.hprof pid
只导出存活对象 jmap -dump:live,formatb,filefileName.hprof pid
$ jmap -dump:formatb,filetest.hprof 进程id Dumping heap to /home/test/test.hprof … Heap dump file created导出后我们可能需要使用相关的工具才能分析 dump 文件这个我们后面再说。 以上为使用 jmap 命令进行导出。我们在前面文章 《JVM GC 垃圾收集器》中提到 -XX:HeapDumpPath 和 -XX:HeapDumpOnOutOfMemoryError 参数组合也会导出 dump 文件区别在于自动导出时是因为触发了 FullGC。 -XX:HeapDumpPathpath 将 OutOfMemoryError 转储到 .hprof 文件此设置虚配合 -XX:HeapDumpOnOutOfMemoryError 一起使用 示例-XX:HeapDumpPath./java_pid%p.hprof %p 表示进程id -XX:HeapDumpOnOutOfMemoryError 当出现 java.lang.OutOfMemoryError 异常则将根据 -XX:HeapDumpPathpath 配置输出 .hprof 文件 查看堆内存信息
jmap -heap pid 显示堆内存当前的使用情况
jmap -histo[:live] pid 统计所有[存活]的对象并统计其占用内存信息以及对象个数等
\( jmap -heap 进程id Attaching to process ID 进程id, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.181-b13using thread-local object allocation. Parallel GC with 4 thread(s)# 堆空间的配置信息 Heap Configuration:MinHeapFreeRatio 0MaxHeapFreeRatio 100MaxHeapSize 2051014656 (1956.0MB)NewSize 42991616 (41.0MB)MaxNewSize 683671552 (652.0MB)OldSize 87031808 (83.0MB)NewRatio 2SurvivorRatio 8MetaspaceSize 21807104 (20.796875MB)CompressedClassSpaceSize 1073741824 (1024.0MB)MaxMetaspaceSize 17592186044415 MBG1HeapRegionSize 0 (0.0MB)Heap Usage: PS Young Generation Eden Space: # Eden 区信息capacity 38797312 (37.0MB)used 35691760 (34.03831481933594MB)free 3105552 (2.9616851806640625MB)91.9954454576647% used From Space: # from 区信息capacity 524288 (0.5MB)used 131072 (0.125MB)free 393216 (0.375MB)25.0% used To Space: # to 区信息capacity 524288 (0.5MB)used 0 (0.0MB)free 524288 (0.5MB)0.0% used PS Old Generation # 老年代信息capacity 195559424 (186.5MB)used 54819320 (52.27977752685547MB)free 140740104 (134.22022247314453MB)28.03205229322009% used34583 interned Strings occupying 4040496 bytes.从以上信息我们可以知道当前进程中大部分对象都在老年代说明我们的很多对象生命周期过长了。 jstack 打印 Java 进程、核心文件或远程调试服务器的 Java 线程堆栈跟踪。 \) jstack -help Usage:jstack [-l] pid(to connect to running process) # 连接正在执行的进程jstack -F [-m] [-l] pid(to connect to a hung process) # 连接到挂起的进程jstack [-m] [-l] executable core(to connect to a core file) # jstack [-m] [-l] [server_id]remote server IP or hostname(to connect to a remote debug server)Options:-F to force a thread dump. Use when jstack pid does not respond (process is hung) # 强制打印-m to print both java and native frames (mixed mode) # 打印具有 Java 和本机 C/C 帧的混合模式堆栈跟踪-l long listing. Prints additional information about locks # 打印有关锁的附加信息-h or -help to print this help message 示例 \( jstack 进程id 2023-10-10 21:28:17 Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.181-b13 mixed mode):Attach Listener #440036 daemon prio9 os_prio0 tid0x00007fd96001f800 nid0x324c waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLE # 当前线程的状态 RUNNABLE 、WAITING都算正常 TIME_WAITTING 程序 sleep 中Java2D Disposer #77543 daemon prio10 os_prio0 tid0x00007fd91005b800 nid0x45e0 in Object.wait() [0x00007fd900dd4000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)- locked 0x0000000088ce20b0 (a java.lang.ref.ReferenceQueue\)Lock)at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)at sun.java2d.Disposer.run(Disposer.java:148)at java.lang.Thread.run(Thread.java:748)logback-8 #50912 daemon prio5 os_prio0 tid0x00007fd9740d3800 nid0x296c waiting on condition [0x00007fd8ffecf000]java.lang.Thread.State: WAITING (parking)at sun.misc.Unsafe.park(Native Method)- parking to wait for 0x00000000885336a0 (a java.util.concurrent.locks.AbstractQueuedSynchronizer\(ConditionObject)at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)at java.util.concurrent.locks.AbstractQueuedSynchronizer\)ConditionObject.await(AbstractQueuedSynchronizer.java:2039)at java.util.concurrent.ScheduledThreadPoolExecutor\(DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1081)at java.util.concurrent.ScheduledThreadPoolExecutor\)DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)at java.util.concurrent.ThreadPoolExecutor\(Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)logback-7 #44036 daemon prio5 os_prio0 tid0x00007fd9740d3000 nid0x75e8 waiting on condition [0x00007fd8fffd0000]java.lang.Thread.State: WAITING (parking)at sun.misc.Unsafe.park(Native Method)- parking to wait for 0x00000000885336a0 (a java.util.concurrent.locks.AbstractQueuedSynchronizer\)ConditionObject)at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)at java.util.concurrent.locks.AbstractQueuedSynchronizer\(ConditionObject.await(AbstractQueuedSynchronizer.java:2039)at java.util.concurrent.ScheduledThreadPoolExecutor\)DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1081)at java.util.concurrent.ScheduledThreadPoolExecutor\(DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)at java.util.concurrent.ThreadPoolExecutor\)Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)logback-6 #37255 daemon prio5 os_prio0 tid0x00007fd97407a000 nid0x32ac waiting on condition [0x00007fd93e4b7000]java.lang.Thread.State: WAITING (parking)at sun.misc.Unsafe.park(Native Method)- parking to wait for 0x00000000885336a0 (a java.util.concurrent.locks.AbstractQueuedSynchronizer\(ConditionObject)at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)at java.util.concurrent.locks.AbstractQueuedSynchronizer\)ConditionObject.await(AbstractQueuedSynchronizer.java:2039)at java.util.concurrent.ScheduledThreadPoolExecutor\(DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1081)at java.util.concurrent.ScheduledThreadPoolExecutor\)DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748) 显示出的状态包括如下几个 DeadLock死锁Waiting on condition等待资源Waiting on monitor entry等待获取监视器Blocked阻塞Runnable执行中Suspend暂停其他 这其中死锁、等待资源、等待获取监视器、阻塞等情况需要进行重点关注。 关于命令的详细参数选项以及说明可以参考官网 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html JVM 可视化分析工具 jconsole JDK bin 目录下jvisualvm JDK bin 目录下也可以直接下载相关 Visualvm 软件。idea 中可以使用 VisualVM Launcher 插件来快速启动。Visualvm 本身也有许多有用的插件。JMC JDK bin 目录下Eclipse MATMemory Analyzer Tool Eclipse 推出的内存分析工具也可以在 Eclipse 中通过插件引入。其特点是开源免费老牌 IDE Eclipse 出品功能也挺多的可直接下载 MAT 软件启动也可以在 Eclipse 中通过插件引入。JProfiler商业付费idea 有快速启动其的同名插件。界面清晰功能强大目前最新的 14.0 版本是支持中文显示界面的。14.0 版本官方教程文档 https://www.ej-technologies.com/resources/jprofiler/v/14.0/help_zh_CN/doc/main/introduction.htmlArthas阿里开源它是可以在生产环境进行运行分析的官方说明是它可以不停止应用对应用进行分析且不会像远程调试一样会阻塞应用执行。官网地址为https://arthas.aliyun.com/
相关文章
-
建立网站的目的是什么wordpress分类自定义字段调用
建立网站的目的是什么wordpress分类自定义字段调用
- 技术栈
- 2026年03月21日
-
建立网站的技术重庆奉节网站建设公司
建立网站的技术重庆奉节网站建设公司
- 技术栈
- 2026年03月21日
-
建立网站的技术路径摄影作品
建立网站的技术路径摄影作品
- 技术栈
- 2026年03月21日
-
建立网站的详细步骤图解免费咨询的律师有吗
建立网站的详细步骤图解免费咨询的律师有吗
- 技术栈
- 2026年03月21日
-
建立网站的意义导购网站怎么建立
建立网站的意义导购网站怎么建立
- 技术栈
- 2026年03月21日
-
建立网站的英文短语如何提高网站开发效率
建立网站的英文短语如何提高网站开发效率
- 技术栈
- 2026年03月21日
