JVM进程jar包加载分析

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

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

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

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

    jps -lm
    • 1

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

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

  2. 使用如下命令:
    jinfo + 进程号
    • 1

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

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

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

-verbose:class

https://blog.csdn.net/tterminator/article/details/53648773

原文地址:https://www.cnblogs.com/feng9exe/p/12144035.html

时间: 2024-07-28 12:30:59

JVM进程jar包加载分析的相关文章

spring加载过程中jar包加载不了,解决方法

当我们在开发spring项目时,一般会将jar包放到webInf/lib下,这样是myeclipse自动将jar包加载到tomcat中webapps下,但是当我们新建一个lib文件夹的情况下,我们add building Path时就会出错,这时候我们有个技巧供使用. 1.项目上点击右键搜索de,找到deployment assembly 目的就是将此处添加的jar包添加到系统webINF/lib路径下 来自为知笔记(Wiz) spring加载过程中jar包加载不了,解决方法

java 查看类是从哪个jar包加载的

package com.jason object FIndjar { def main(args: Array[String]): Unit = { val pd = classOf[org.apache.hadoop.mapreduce.TaskID].getProtectionDomain println("===="*30) val cs = pd.getCodeSource System.out.println(cs.getLocation) } } -------------

ImageLoader的Jar包加载图片

ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));        DisplayImageOptions options=new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).build();        ImageLoader.getInstance().displayImage("http:/

JVM自定义类加载器加载指定classPath下的所有class及jar

一.JVM中的类加载器类型 从Java虚拟机的角度讲,只有两种不同的类加载器:启动类加载器和其他类加载器. 1.启动类加载器(Boostrap ClassLoader):这个是由c++实现的,主要负责JAVA_HOME/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作. 2.其他类加载器:由java实现,可以在方法区找到其Class对象.这里又细分为几个加载器 a).扩展类加载器(Extension ClassLoader):负责用于加载JAVA_HOM

JVM --字节码的加载

ClassLoader类加载器 常见的类加载器有BootStrapClassLoader<-ExtClassLoader<-AppClassLoader<-用户ClassLoader BootStrapClassLoader:加载Java自带的核心类: ExtClassLoader加载在/jre/lib/ext目录下的jar包,同样用户可以将jar放在该目录下. AppClassLoader 加载classpath下面的内容, 加载过程: 读取文件并加载,首先申请父类的加载器进行加载,如

UE4 Pak资源包加载

UE4 Pak包加载机制: 引擎初始化时,默认会去下面的目录搜索所有的*.pak文件, [Demo]/Content/Paks/" [Demo]/Saved/Paks/" Engine/Content/Paks/" 然后解析找到的所有的pak资源包,建立文件索引, 这样当游戏中需要某个文件的数据时,就可以找到这个文件属于哪个pak文件了

websphere OSGi应用环境下服务调用saaj包加载问题分析报告

故障情况说明 系统简称 基于osgi业务应用系统 故障名称 系统在客户生产环境:websphere7.0,基于osgi的应用系统,外部系统调用本系统提供的webservice服务时发生SOAPMessageFactory类加载异常,导致webservice服务不能被正常调用. 故障功能点 Webservice服务 关键异常 Caused by: java.lang.NoClassDefFoundError: com.sun.xml.internal.messaging.saaj.soap.ver

JVM:java类的加载机制

原文连接:https://www.cnblogs.com/ityouknow/p/5603287.html 类加载机制的奥妙. 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到

【转】查看java类是从哪个包加载

Java的类装载器使用的是优先策略,加载类的时候先找到哪个就加载哪个.有时候我们做一个系统,当类库非常庞大的时候,类可能会出现冲突,也就是类路径中存在不同版本的两个相同的类,这往往给调试带来非常大的麻烦,我们可能修改了类,但由于类加载器却使用的是另外一个未被更新的类,这个时候就会丈二和尚摸不着头脑,一度使调试过程误入歧途. 那么怎么来确定我当前所加载的类是位于哪个路径或者存在于哪个jar包当中呢?Java语言给我们的解决方案如下代码所示: import java.security.CodeSou