【知了堂学习笔记】java中的编译命令和JVM性能调优监控工具

Java JVM原理与性能调优:从基础到高级应用 优先理解业务:不同应用类型(Web/计算/批处理)需要不同策略数据驱动决策:基于监控数据而非猜测进行调优循序渐进:每次只调整一个参数并观察效果权衡取舍:吞吐量 vs 延迟 vs 内存占用。 阅读详情

一.windows命令行编译命令java和javac、javap

首先我们需要编译一段java程序

public class JavaTest{
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}
然后打开windows命令行界面win+R,打开:cmd

默认位置C盘下Users\dell文件夹下

可输入G(盘符): 进入指定的盘符    cd 文件夹路径 进入希望的文件夹


注意:使用java、javac和javap等命令,需要安装JDK,且需要jdk的bin目录添加到环境变量path下。

1.javac

Javac命令用来编译.java文件并生成.class文件


除了直接使用,还可以添加参数

javac -d destdir srcFile  (destdir:目标文件夹;srcFile :需要编译的文件)

-d destdir是用来指定存放编译生成的.class文件的路径。(若此选项省略,那么默认在当前目录下生成.class文件,并且没有生成包文件夹;当前目录可以用“.”来表示,即:javac -d . srcFile )

注意:添加-d选项除了可以指定编译生成的.class文件的路径外,最大的区别是可以将源文件首行的package关键字下的包名在当前路径下生成文件夹。

package com.practice;
public class JavaTest{
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}

使用命令javac  –d  .  JavaTest.java 会将pacage中的目录结构同时生成并将生成的.class文件放入该目录结构中

2.java

Java命令是运行该类的命令


如果在同级目录结构中编译.java文件,则可以直接运行该类;但是如果使用了javac -d destdir srcFile或编译的.class文件与当前文件不在同一级目录,则不能运行


必须要在之前加上包名


3.javap

javap主要用于帮助开发者深入了解Java编译器的机制,主要选项有:

-c 分解方法代码,即显示每个方法具体的字节码

-public | protected | package | private 用于指定显示哪种级别的类成员

-verbose 指定显示更进一步的详细信息

输入 javap -c com/practice/ JavacTest,显示如图:



二.JVM性能调优监控工具jps,jstack,jmap,jhat,jstat,hprof

JDK本身提供了很多方便的JVM性能调优监控工具,除了自带的集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具

VisualVM和jConsole等在jdk安装目录下的lib目录中


以下工具的使用要安装JDK(1.5及以后版本)且JDK的bin要配置到classpath中

1.jps

jps主要用来输出JVM中运行的进程状态信息。语法格式如下:

jps [options] [hostid]

如果不指定hostid就默认为当前主机或服务器。

命令行参数选项说明如下:

-q 不输出类名、Jar名和传入main方法的参数

-m 输出传入main方法的参数

-l 输出main类或Jar的全限名

-v 输出传入JVM的参数


2.jstack

jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下:

jstack [option] pid

jstack [option] executable core

jstack [option][server-id@]remote-hostname-or-ip

命令行参数选项说明如下:

-l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况

-m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法)

 

jstack是java虚拟机自带的一种堆栈跟踪工具。jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:

jstack [-l] pid

jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

因此jstack命令主要用来查看Java线程的调用堆栈的,可以用来分析线程问题(如死锁)。

 

可以参考下面博客中的内容,加深理解

http://www.cnblogs.com/chenpi/p/5377445.html

3.jmap

jmap用来查看堆内存使用状况,一般结合jhat使用。

打印进程的类加载器和类加载器加载的持久代对象信息,输出:类加载器名称、对象是否存活(不可靠)、对象地址、父类加载器、已加载的类大小等信息。

可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。

jmap语法格式如下:

jmap [option] pid

jmap [option] executable core

jmap [option][server-id@]remote-hostname-or-ip

如果运行在64位JVM上,可能需要指定-J-d64命令选项参数。

jmap -permstat pid

1)、options:

executable Java executable from which thecore dump was produced.

(可能是产生core dump的java可执行程序)

core 将被打印信息的core dump文件

remote-hostname-or-IP 远程debug服务的主机名或ip

server-id 唯一id,假如一台主机上多个远程debug服务

2)、基本参数:

-dump:[live,]format=b,file=<filename>使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.

-finalizerinfo 打印正等候回收的对象的信息.

-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.

-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.

-permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.

-F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.

-h | -help 打印辅助信息

-J 传递参数给jmap启动的jvm.

pid 需要被打印配相信息的java进程id,创业与打工的区别 - 博文预览,可以用jps查问.


可以参考下面博客中的内容,加深理解

http://blog.youkuaiyun.com/sxb0841901116/article/details/46591807

4.jhat

是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言

 

可以参考下面博客中的内容,加深理解

http://blog.youkuaiyun.com/gtuu0123/article/details/6039474

5.jstat

jstat(JVM统计监测工具):个区内存和GC的情况

语法格式如下:

jstat [ generalOption | outputOptions vmid[interval[s|ms] [count]] ]

vmid是Java虚拟机ID,在Linux/Unix系统上一般就是进程ID。interval是采样时间间隔。count是采样数目。

 

可以参考下面博客中的内容,加深理解

http://blog.youkuaiyun.com/zhaozheng7758/article/details/8623549

6.hprof

hprof能够展现CPU使用率,统计堆内存使用情况。

语法格式如下:

java -agentlib:hprof[=options]ToBeProfiledClass

java -Xrunprof[:options] ToBeProfiledClass

javac -J-agentlib:hprof[=options]ToBeProfiledClass

 

可以参考下面博客中的内容,加深理解

http://geek.youkuaiyun.com/news/detail/90509

7.其它

Javah:用于根据JAVA本地方法,生成对应的c语言头文件及相应的stub文件的命令.

jdb:re文件和正在运行的Java进程进行实时地调试.

Jinfo:以输出并修改运行时的java 进程的opts.

 

可以参考下面博客中的内容,加深理解

http://blog.youkuaiyun.com/fenglibing/article/details/6411924








JVM 11 的优化指南:如何进行JVM调优,JVM调优参数有哪些 在实际的Java应用开发中,JVM(Java Virtual Machine)调优是提升应用性能的关键步骤。合理的调优可以显著提升应用的响应速度、吞吐量,并且减少内存消耗和GC(Garbage Collection)停顿时间。本文将详细介绍JVM 11的优化指南,包含如何进行JVM调优以及常见的JVM调优参数,并提供3个实用的代码示例。 阅读详情

相关推荐

JVM第7篇-性能监控 & JVM性能调优案例

性能监控一、JVM监控及诊断工具-命令行篇1.1 基础故障处理工具1.1.1 jps: 虚拟机进程状况工具命令格式使用1.1.2 jstat: 虚拟机统计信息监视工具命令格式使用1.1.3 jinfo: Java配置信息工具命令格式使用1.1.4 jmap: Java内存映像分析工具命令格式1.1.5 jstack: Java堆栈跟踪工具命令格式使用二、JVM监控及诊断工具-GUI篇三、JVM运行时参数四、调优概述4.1 生产环境中的问题4.2 调优基本问题为什么要调优?调优的大方向不同阶段的考虑总结4.3

qq_43478625的博客 2400

Java编译运行命令

javac是用来编译.java文件的。dos窗口直接输入javac可以看到大量提示信息,提示javac命令的用法。 例子 源码 命令 -cp 指定查找用户类文件和注释处理程序的位置,与-classpath效果一样。多个jar包,window上分号“;” 分隔,linux上是分号“:”分隔。不支持通配符,需要列出所有jar包,用一点“.”代表当前路径。 -d 指定放置生成的类文件(.class)的位置。若此选项省略,默认在当前目录下生成.class文件,并且不会生成包文件夹;当前目录可以用“.”来表示

似水光阴 1万+

JVM 调优常用命令

如果您觉得有用的话,记得给,写作不易啊^ _ ^。而且听说,实在白嫖的话,那欢迎常来啊!!!

杨杨杨~~的博客 1863

Java命令大全

常用Java命令 javac java javap jar javadoc jps jstat jconsole jstack

骑个小蜗牛的博客 2万+

JVM性能调优监控工具总结

这里写目录标题JVM性能调优监控工具总结一、JDK命令行工具jps: 查看所有的Java进程jstat: 监视虚拟机各种运行状态jinfo: 实时的查看和调整虚拟机各项参数jmap: 生成堆转储快照jhat: 分析heapdump文件jstack:生成虚拟机当前时刻的线程快照二、JDK可视化分析工具2.1 JConsole:Java 监视与管理控制台2.2 Visual VM:多合一故障处理工具 JVM性能调优监控工具总结 现实企业级Java应用开发、维护中,有时候我们会碰到下面这些问题: OutOfMe

洛晓关的博客 1489

JVM性能调优(4)——性能调优工具

目录 一、JDK工具1、JDK工具2、利用 jps 找出进程3、利用 jstat 查看VM统计信息4、利用 jmap 查看对象分布情况5、利用 jstack 分析线程栈 二、Linux 命令行工具1、top 命令2、vmstat 命令3、pidstat 命令 三、可视化工具1、jvisualvm — JVM监控3、GCViewer — 离线分析GC日志4、GCeasy — 在线分析GC日志5、FastThread — 分析线程栈6、MAT — 分析堆转储文件7、性能调优工具8、JVM监控平台 四、利

javalingyu的博客 1773

Java 编译指令集大全

栈和局部变量操作 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈 iconst_4 将int类型常量4压入栈 iconst_5 将int类型常量5压入栈 lconst_0 将long类型常量0压入栈 lconst_1 将long类型常量1压入栈

b379685397的博客 1万+

JVM_第七篇:双管齐下,JVM内部优化与JVM性能调优

文章目录一、前言二、编译时优化2.1 Javac编译器2.2 Java语法糖2.2.1 泛型和泛型擦除2.2.2 自动装箱、自动拆箱、遍历循环2.2.3 条件编译三、运行时优化(核心:JIT编译器/即时编译器)3.1 HotSpot虚拟机内的JIT编译器3.1.1 编译器和解释器并存的架构3.1.2 编译对象和触发条件3.1.3 不同的编译过程3.2 编译优化技术3.2.1 公共子表达式消除(局部公共子表达式消除+全局公共子表达式消除)3.2.2 数组范围检查消除3.2.3 方法内联3.2.4 逃逸分析(

毛毛的专栏 3556

如何在命令行编译运行java程序?

2023年5月29日,周一下午:好久没写java程序了,今天居然忘了怎么用命令行编译运行java程序了,还好后来想起来了,为了避免忘记,写篇博客记录一下。

m0_61629312的博客 3916

人工势场法在自动驾驶避障中的实践与优化

本文深入探讨了人工势场法在自动驾驶避障中的核心原理与实践优化。通过解析引力与斥力模型,揭示了经典算法在局部最优和目标不可达等问题上的局限性,并重点介绍了改进斥力场函数、引入道路边界斥力及动态参数调整等关键优化策略,有效提升了该局部路径规划算法在复杂动态场景下的实用性与鲁棒性。

weixin_29208327的博客 929

系统-等保三级-CentOS Linux 7合规基线检查 shell脚本

系统-等保三级-CentOS Linux 7合规基线检查 shell脚本

swindy博客 2409

Java笔记——Java命令大全

使用jstat命令可以实时查看Java应用程序的性能状况,例如堆内存的使用情况、类加载器的状态、JIT编译器运行时间等重要信息,有助于开发人员及时发现性能问题并进行优化。需要注意的是,jstack命令只能获取Java进程当前的线程信息和调用栈信息,并不能记录历史数据,如果需要跟踪Java进程的历史性能指标,建议使用其他性能分析工具。-source version:指定要编译的Java源代码的版本(例如,-source 8表示使用Java 8的语言功能进行编译)。

a25847a的博客 6601

tree_sitter多语言解析器配置实战指南

本文是一份详细的Tree-sitter多语言解析器配置实战指南。文章从零开始,手把手指导如何搭建Python环境、安装指定版本的tree-sitter库、下载并编译多种语言的语法规则,最终构建一个统一的解析器库。通过实战代码演示了如何初始化解析器、解析代码并遍历语法树,旨在帮助开发者高效处理多语言代码分析任务,并分享了高级技巧与常见问题排坑经验。

weixin_29245767的博客 268

调优 | 别再说你不会 JVM 性能监控和调优了

Hi ! 我是小小,今天是本周的最后一篇,本篇将会着重讲解关于 JVM 调优和性能监控方面的内容常用工具常用工具主要有 JDK 自带工具与 Arthas 这两种工具。JDK 自带工具jp...

mySoul 3407

LeRobot 入门教程(四)SO-101机械臂组装教程

《SO-101机器人组装与配置指南》详细介绍了旗舰机器人SO-101的完整搭建流程。从获取3D打印零件、安装LeRobot软件和FeetechSDK,到分步组装6个关节的机械臂结构(含夹爪/手柄选项),指南提供了清晰的螺丝规格和安装位置说明。重点包括:电机ID/波特率设置方法、USB端口识别技巧、领导者/跟随者臂的校准流程,以及故障排查建议。完成组装后,用户可通过配套Python脚本校准机器人,为后续的自主学习任务做好准备。文档附有视频演示和技术支持通道,确保用户顺利完成机器人部署。

2506_90492529的博客 2583

提示词驱动的多智能体协作系统

《提示词驱动的多智能体协作系统》 关键词:人工智能、多智能体系统、协作机制、提示词驱动、系统设计与应用 摘要:本文深入探讨提示词驱动的多智能体协作系统,首先介绍其背景和核心概念,然后详细分析多智能体系统的基本原理和提示词驱动的协作机制,最

AI天才研究院 853

JVM调优命令大全及常用命令工具和实战步骤

直接内存是在java堆外的、直接向系统申请的内存空间。通常访问直接内存的速度会优于Java堆。因此出于性能的考虑,读写频繁的场合可能会考虑使用直接内存。

想着百万年薪努力的小赵 5万+

Spine骨骼动画查看器 - Skeleton Viewer

骨骼动画是现代游戏和动画制作中常用的技术之一。Spine骨骼动画查看器(Skeleton Viewer)是一个官方提供的工具,用于查看和调试Spine骨骼动画。本文将介绍Skeleton Viewer的功能和使用方法,并提供相应的源代码示例。通过Skeleton Viewer,开发者可以直观地查看和调试Spine骨骼动画,包括骨骼结构、动画播放和事件触发等。这有助于提高骨骼动画的质量和效果,并加速开发过程。以上代码演示了如何使用Skeleton Viewer查看和播放Spine骨骼动画。

HsvvDatabase的博客 3465

JVM性能调优监控工具

JDK自带了几个JVM性能调优和监控工具,可以帮助诊断和解决Java应用程序的性能问题。以下是其中一些常用的工具:1. jps:Java进程状态工具,用于列出当前系统中运行的Java进程的ID和相关信息。2. jstat:JVM统计信息工具,用于收集和显示Java应用程序中的各种运行时统计信息,如内存、垃圾回收、类加载等。3. jmap:Java内存映像工具,用于生成Heap转储快照,以及查看Java堆中对象的详细信息。4. jstack:Java堆栈跟踪工具,用于生成线程转储快照,以及查

AHAO的博客 1708

基于粒子群优化的PID控制在药液流量控制系统中的应用

本文提出了一种基于粒子群优化(PSO)的PID控制算法,用于药液流量控制系统。系统采用C37控制器和Codesys 2.3编程环境实现,通过传感器实时监测流量、压力和车速,并控制水泵占空比和电动球阀开度来精确调节药液流量。硬件配置包括FT-2000流量传感器、PT-3000压力传感器和MV-500电动球阀等。控制算法将PSO与PID结合,使用ITAE指标优化PID参数,在Codesys中实现了包含PSO优化循环、PID控制等功能的程序模块。该系统通过分层控制策略和智能优化算法,提高了药液流量控制的精度和响应

AI的内部世界的博客 250

【时时三省】tessy 单元测试 之 CTE(The Classification Tree Editor) 的使用

有图有文字详细介绍利用 CTE界面中的树 批量产生用例。

时时三省的博客 840

JVM调优

因此,建议在调优之前先进行性能分析和监测,针对性地调整参数,并进行实际测试和验证,以确保优化的效果和稳定性。每个参数都有特定的作用和含义,根据具体需求和应用程序的特点,选择适当的参数进行配置和调整。:垃圾回收是JVM的重要功能,但不恰当的垃圾回收策略可能导致长时间的停顿和性能下降。JVM调优旨在选择合适的垃圾回收器、调整垃圾回收参数,平衡吞吐量和停顿时间,减少垃圾回收对应用程序的影响。通过选择合适的垃圾回收器算法和参数,调整垃圾回收策略,可以降低垃圾回收的频率,提高系统的运行效率。

CA优快云的博客 8856

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JVM性能监控与调优-命令行工具

jps。

weixin_52919967的博客 1143

计算机控制技术及应用

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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JVM调优与监控命令概览

JVM(Java虚拟机)的性能调优和故障处理是至关重要的。Sun JDK提供了一系列强大的命令行工具,帮助开发者和运维人员监控JVM状态、诊断问题并进行性能调优。以下是对这些实用工具的简要介绍:

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6812

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JVM调优实战 Day 6:JVM性能监控工具实战

本篇文章围绕JVM性能监控工具进行了系统性讲解,从概念解析、技术原理、常见问题、诊断方法、调优策略到实战案例,全面覆盖了JVM性能监控的核心内容。如何使用jstatjmapjhat等命令行工具进行监控与分析如何通过VisualVM和JMC进行图形化性能分析在实际项目中如何结合监控工具定位内存泄漏、GC问题等性能瓶颈通过真实案例了解性能问题的诊断与解决流程| 技术点 | 说明 || jstat | 查看GC统计信息,判断GC频率和效率 |

在未来等你的专栏 1418

深入理解Java虚拟机:Jvm性能调优

本篇内容包括:Jvm 性能调优简介;根据需求目标进行 Jvm 调优规划(即 调优的目标、调优的步骤);Jvm 调优参数、命令、工具;以及 Java 中的内存泄露问题的详解...

栗筝i的博客 5512
上一篇: 【知了堂学习笔记】正则表达式
T_Texture
博客等级 码龄9年 7粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值