JVM进程jar包加载分析

有时在一个应用中,会依赖很多的jar包,难免会出现引用不同jar包中的同名类,或者jar包冲突,这时搞清楚:

  1. JVM启动时加载了哪些jar包
  2. 或者一个类来自哪个jar中来就非常重要了。

一、查看JVM加载了哪些jar包

  1. 启动JVM,通过如下命令获取进程号:

    jps -lm

    其中参数:
    -l:输出main所在类的全名,如果执行的是jar包,则输出jar包路径
    -m:输出jvm进程启动时传递给main函数的参数

    jps还有参数-v:输出jvm进程启动时JVM参数。

  2. 使用如下命令:

    jinfo + 进程号

    找到打印出的信息中的java.class.path属性值,既是jvm进程启动时加载的jar包。

二、查看具体的class从哪个jar保重加载的

在JVM启动时,加上如下参数:

-verbose:class

即可在console控制台上看到加载的class是从哪个jar中来的,示例如下:

[Loaded java.util.regex.Pattern from /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/rt.jar]
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: jar 启动是指使用 Java 命令行工具来执行一个打包好的 Java 应用程序,而在执行过程中,进程名称可能会显示为 Java 应用程序的默认名称,如 java.exe 或 javaw.exe,而如果想要修改进程名称,可以采用以下方法: 1. 使用 Java 的 ProcessBuilder 类来创建一个新的进程并指定进程名称。 2. 使用 Java 的 Runtime 类的 exec 方法来执行操作系统命令,如 Windows 下的 taskkill 命令、Linux 下的 kill 命令来关闭指定进程,并使用命令行参数来指定修改后的进程名称。 3. 使用 Java 的 JNI(Java Native Interface)机制来调用本地 C/C++ 代码,并通过操作系统的系统调用来修改进程名称。 需要注意的是,修改进程名称的方法因操作系统而异,例如在 Windows 中,可以使用 Process Explorer 工具来修改进程名称,而在 Linux 中,则可以通过修改 /proc/PID/cmdline 文件来修改进程名称。而在 Java 中,则需要借助以上所述的方法来实现。 ### 回答2: 在Java应用程序中,JAR文件是常用的归档文件格式,它可以将类、资源和元数据打包成一个文件。当运行JAR文件时,Java虚拟机会创建一个进程来运行该应用程序。 如果需要修改JAR进程名,可以通过在启动命令中使用Java启动参数来实现。具体方法如下: 1.在命令中添加启动参数“-Dorg.eclipse.swt.internal.gtk.cairoGraphics=false”,该参数可以在Linux系统中启用AWT/Swing窗口,同时在Windows系统中不会影响应用程序的正常运行。 2.使用“-Djava.awt.headless=true”参数禁用图形用户界面,防止程序在无控制台环境中启动时崩溃。 3.使用“-Dfile.encoding=UTF-8”参数将JVM编码设置为UTF-8,以避免在Windows系统中使用中文路径和非ASCII字符时出现问题。 4.使用“-Dsun.java.command=新的进程名”参数设置进程名称,这个名称将显示在进程列表中。 总之,通过修改JVM启动参数来修改JAR进程名是完全可行的,只需要在启动命令中正确设置相关参数即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值