CN101126988A - 一种类文件装载方法和系统 - Google Patents

一种类文件装载方法和系统 Download PDF

Info

Publication number
CN101126988A
CN101126988A CNA2007101638950A CN200710163895A CN101126988A CN 101126988 A CN101126988 A CN 101126988A CN A2007101638950 A CNA2007101638950 A CN A2007101638950A CN 200710163895 A CN200710163895 A CN 200710163895A CN 101126988 A CN101126988 A CN 101126988A
Authority
CN
China
Prior art keywords
file
class
self
jar
load
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007101638950A
Other languages
English (en)
Other versions
CN100549958C (zh
Inventor
游兴旺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kingdee Software China Co Ltd
Original Assignee
Kingdee Software China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kingdee Software China Co Ltd filed Critical Kingdee Software China Co Ltd
Priority to CNB2007101638950A priority Critical patent/CN100549958C/zh
Publication of CN101126988A publication Critical patent/CN101126988A/zh
Application granted granted Critical
Publication of CN100549958C publication Critical patent/CN100549958C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种类文件装载方法,包括步骤:自定义一个类装载器替换java虚拟机默认的系统类装载器;根据自定义的类装载器规则,生成java应用所需jar文件的索引文件;Java虚拟机启动所述自定义的类装载器,初始化自定义类装载器;所述自定义类装载器请求上一级的应用类装载器装载类文件,如果所述应用类装载器装载不成功,则自定义类的类装载器根据所述索引文件装载类文件。本发明通过自定义类装载器替换虚拟机默认的系统类装载器,使用自定义的类装载器来装载类文件,提高了系统启动时类文件的装载效率。并且在装载大量的Jar文件时不会超出操作系统的文件句柄限制,且能与第三方系统集成。本发明还提供了一种类文件装载系统。

Description

一种类文件装载方法和系统
技术领域
本发明涉及类装载领域,特别是涉及一种类文件的装载方法和系统。
背景技术
基于java的大型企业软件,如基于java的ERP(企业资源计划,EnterpriseResource Planning)软件可能存在成百上千个jar文件,并且需要装载的组件可能来自第三方系统,在启动与运行这样的软件系统时,为了提高启动与运行时系统的效率、获得良好的性能,需要JVM(Java Virtual Machine,java虚拟机)快速查找定位与装载相关的类(class)文件和资源文件。
Java虚拟机(JVM)的类装载就是将包含在类文件中的字节码装载到JVM中,但是类装载器(classloader)也不是原封不动的装载到JVM,它是将类(class)文件中的内容转换成JVM使用的类字节码,通过类装载器装载到JVM中的字节码数据,从而成为可执行的代码。
类装载是java语言提供的最强大的机制之一,一个类代表要执行的代码,而数据则表示其相关状态。状态时常改变,而代码则不会。当我们将一个特定的状态与一个类相对应起来,也就意味着将一个类事例化。尽管相同的类对应的实例其状态千差万别,但其本质都对应着同一段代码。一旦一个类被载入Java虚拟机中,同一个类就不会被再次载入了。java的类装载机制是在同一个JVM中,按类路径的层次和顺序装载类文件。
假定有一个大型的Java应用,它需要从c:\app\path1;d:\path2;d:\app\path3三个目录下装载java运行的组件,其中path1下有A1.jar,A2.jar,A3.jar......An.jar;path2目录下有B1.jar,B2.jar,B3.jar......Bn.jar;path3目录下存在C1.jar,C2.jar,C3.jar......Cn.jar,其启动类为com.app.MainClass,存放在C3.jar的com/app目录下。现有技术中Java标准的启动方式为:java-cpc:\app\path1\A1.jar;......;C:\app\path1\An.jar;d:\path2\B1.jar;......d:\path2\Bn.jar;d:\app\path3\C1.jar;......;d:\app\path3\Cn.jar com.app.MainClass。其中java为java程序启动命令,-cp后面是java应用所需要的所有java组件列表,即java类路径,com.app.MainClass就是java应用启动类。
执行所述命令时,首先启动java虚拟机,完成相关初始化工作后,虚拟机开始装载应用需要的第一个类文件com.app.MainClass,由于标准的java虚拟机并不知道这个类文件在哪个jar文件中,所以虚拟机必须根据-cp后面的类路径逐个打开jar文件,顺序查找该jar文件中是否包含com.app.MainClass。
由于jar文件比较多,而且每个jar文件包含了大量的class文件。按上面的方式装载class文件,会存在系统在启动与运行时造成效率低下、性能差的问题;进一步,由于所有操作系统启动程序的命令行都有大小限制,如window默认为8000个字符,并且需要装载的文件多,从而导致类路径过长,超出操作系统限制;而且java虚拟机为了提高系统启动时的效率,避免反复打开/关闭文件,会缓存每个jar文件句柄,这样就可能导致程序运行时打开的文件句柄过多,而操作系统对每个程序进程打开的文件句柄数一般是有限制的,因此大量的文件句柄会也会导致系统存在效率低下、性能差的问题,并且还会导致运行时出现异常。
发明内容
本发明所要解决的技术问题是提供一种类文件的装载方法,能够在装载类文件时不按照java默认顺序查找、装载类文件,解决java默认顺序查找导致的性能问题,提高系统启动、运行时类文件的装载效率。
为了解决上述问题,本发明公开了一种类文件装载方法,包括步骤:
自定义一个类装载器替换java虚拟机默认的系统类装载器;
根据自定义的类装载器规则,生成java应用所需jar文件的索引文件;
Java虚拟机启动所述自定义的类装载器,初始化自定义类装载器;
自定义类装载器装载类文件。
其中,所述自定义类装载器装载类文件的具体步骤为:
自定义类装载器请求上一级的应用类装载器装载类文件,如果所述应用类装载器装载不成功,则:
自定义类的类装载器根据所述索引文件装载类文件。
进一步,所述自定义的类装载器根据生成的索引文件查找对应的jar文件,从所述jar文件中确定要装载的类文件,装载所述确定的类文件。
进一步,根据类文件被自定义的类装载器装载的命中率缓存确定数量的jar文件句柄。
其中,所述自定义类装载器装载类文件的具体步骤包括:
Java虚拟机通知自定义的类装载器要装载的类;
自定义的类装载器请求上一级的应用类装载器装载所述类,如果装载不成功,则:
自定义的类装载器解析该类对应的包名
根据所述包名,从生成的索引文件中确定对应的jar文件;
判断所述jar文件中是否包含对应的类文件,有则装载,否则:
判断下一个jar文件中是否包含对应的类文件,重复上一步,完成类文件的装载。
其中,所述生成java应用所需jar文件的索引文件的具体步骤包括:
扫描每个路径下的所有jar文件,根据每个jar文件中的每个目录生成该目录到jar文件名的映射,在当前路径下生成索引文件。
其中,所述在当前路径下生成索引文件的具体步骤包括:
打开第一/下一个路径;
逐个打开所述路径下的所有jar文件;
递归查找所述打开的jar文件中的每个目录,如果该目录下包括类文件,则生成该目录与jar文件的映射;
根据所述生成的映射生成索引文件。
进一步,当java应用所需的jar文件变化时,则再次生成java应用所需jar文件的索引文件。
本发明还公开了一种类文件装载系统,包括:
替换单元,用于自定义一个类装载器替换java虚拟机默认的系统类装载器;
索引文件生成单元,根据自定义的类装载器规则,生成java应用所需jar文件的索引文件;
初始化单元,用于当Java虚拟机启动所述自定义的类装载器时,初始化自定义类装载器;
第一装载单元,用于自定义类装载器装载类文件。
其中,所述第一装载单元包括:
请求单元,用于请求上一级应用类装载器装载类文件;
判断单元,用于判断上一级应用类装载器装载类文件是否成功;
第二装载单元,用于所述自定义类的类装载器根据索引文件装载类文件。
与现有技术相比,本发明具有以下优点:
本发明通过自定义类装载器替换虚拟机默认的系统类装载器,使用自定义的类装载器装载类文件。自定义类装载器根据本发明所述方法确定装载相关类文件:首先代理到应用类装载器装载jvm自身标准组件;如果应用类装载器无法装载所述类文件,则根据类文件的名称空间映射关系确定相关的包文件,从中装载java类文件。进一步,为了加快文件查找速度,可以根据jar文件命中率缓存一定数量的jar文件句柄,从而避免文件频繁打开与关闭操作影响系统性能,并且避免打开文件超出操作系统的限制,提高了系统启动时的类装载效率。当虚拟机启动时,首先初始化自定义的类装载器,自定义的类装载器会根据当前路径下的索引文件建立java名称空间(目录,java package)与Jar文件的对应映射关系,通过支持变量的绝对路径方式,可以解决第三方系统集成的问题。
附图说明
图1是本发明java类装载器层次结构图;
图2是本发明实施例类文件装载方法的流程图;
图3是图2所示本发明实施例中步骤202生成索引文件的具体步骤流程图;
图4是图2所示本发明实施例中步骤204中所述自定义的类装载器装载类文件的方法流程图;
图5是本发明实施例类文件装载系统的结构框图;
图6是图5中第一装载单元的组成结构图。
具体实施方式
Java虚拟机(Java VirtualMachine,JVM):可运行java代码的虚拟计算机,只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何java代码能够在该系统上运行。JVM拥有自己完善的硬件架构,如处理器、堆栈、寄存器等,并且还具有相应的指令系统。
类文件(class):用于存储java程序运行时代码指令集的文件,每个类文件只属于某一个包(Package)。
包(Package):类文件的名称空间,在物理存储上与文件系统的目录对应。
类装载器:java类装载器,由于java程序包含很多的类文件,并且这些文件不像静态的C程序一次性装载入内存,它们只有在需要的时候才装载。Java类装载器从类文件获取不依赖平台的字节码,然后将它们装载到JVM内存空间运行。
Jar文件:包含多个java类文件和相关资源的同一存储库。是java程序组件分发的一种通用形式。
本发明的原理:在Java启动命令中设置自定义的类装载器替换虚拟机默认的系统类装载器,虚拟机使用自定义的类装载器根据索引文件来装载类文件。
自定义类装载器根据以下方法查找定位相关java类文件:首先代理到应用类装载器(AppClassLoader)装载jvm自身的标准组件;如果应用类装载器(AppClassLoader)无法装载该类文件,则根据类文件的名称空间映射关系查找打开相关的Jar文件,从中装载类文件。为了加快文件查找速度,还可以根据Jar文件命中率缓存一定数量的Jar文件句柄,避免文件频繁打开与关闭操作影响的系统启动的效率,提高启动系统的速度。当虚拟机启动时,首先就会初始化自定义的类装载器,此时,自定义的类装载器会根据当前路径下的INDEX.LIST文件建立java名称空间(目录)与Jar文件的对应映射关系。通过支持变量的绝对路径方式,可以解决第三方系统集成装载的问题。
为了更清楚的理解本发明,首先对本发明所述的java类装载器的层次规则进行介绍:根据java规范,JVM的类装载器默认存在三个层次,如图1,示出了java类装载器的层次结构图。
第一级就是启动类装载器(BootStrapClassLoader),用于虚拟机装载自身的标准类文件,即装载默认rt.jar中的标准虚拟机内核类文件。
第二级是扩展类装载器(ExtendClassLoader),用于装载虚拟机目录lib/ext目录下的所有jar文件。
第三级是应用类装载器(AppClassLoader),用于装载类路径中定义的所有jar文件,所述应用类装载器是java应用所使用的类装载器。
第四级是一个隐含的系统类装载器(SystemClassLoader),默认没有设置,所述系统类装载器位于应用类装载器的下一级。
其中所述启动类装载器、扩展类装载器、应用类装载器在虚拟机初始化时已经创建好,用于装载虚拟机自身组件。Java规范推荐类装载器采用上一级优先的代理规则,即当查找类文件时,先从上一级类装载器查找,上一级类装载器无法装载对应的类文件时才在本级类装载器的类路径中装载。当虚拟通过自定义的类装载器装载组件时,如果自定义的类装载器找不到相关组件,则直接调用上级类装载器来装载组件。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图2,示出了本发明实施例类文件的装载方法的流程图,包括以下步骤:
步骤201、自定义一个类装载器替换java虚拟机默认的系统类装载器。
通过在java启动命令中设置自定义的类装载器,用所述自定义的类装载器替换虚拟机默认的系统类装载器。java虚拟机支持自定义方式扩展虚拟机查找类文件的行为,所述自定义的类装载器继承自虚拟机的类装载器。自定义的类装载器遵循java标准,但是重载了标准类装载器查找、装载类文件的方法。自定义类装载器查找、装载类文件的具体方法将在后面进行详细的描述,在此不进行介绍。
步骤202、生成java应用所需jar文件的索引文件。
根据自定义的类装载器规则,生成java应用所需jar文件的索引文件。
下面以一个实例说明生成索引文件的详细过程,通过:
java-cp smartclassloar.jar
A.SmartClassLoaderIndexFile
PATH1=c:\app\path1PATH2=d:\path2PATH3=d:\app\path3即可在当前路径下生成index.lst文件。生成索引文件的算法包装在A.SmartClassLoaderIndexFile这个类中,SmartClassLoaderIndexFile这个组件会扫描每个路径下的所有jar文件,根据每个jar文件中的每个目录生成该目录到jar文件名的映射。
进一步,如果java应用所需要的jar文件变化时,则重新生成java应用所需jar文件的索引文件。
步骤203、Java虚拟机启动所述自定义的类装载器,初始化自定义类装载器。
编写java应用的启动脚本,在执行java的程序参数中通知虚拟机运行java程序时使用所述自定义的类装载器。下面以一个实例详细说明其过程:
在执行java的程序参数中添加-Djava.system.class.loader=A.SmartClassLoader通知虚拟机运行该java程序时使用自定义的系统类装载器,其中SmartClassLoader即为所述自定义的类装载器;其中,所述-DSmartClassloader.indexFile=./index.lst参数通知所述自定义类装载器该应用的jar文件索引文件为当前路径下的index.lst。完整参数如下:
java-cp smartclassloader.jar
-Djava.system.class.loader=A..SmartClassLoader
-DsmartClassLoader.indexFile=./index.lst
-DPATH1=c:\app\path1-DPATH2=d:\path3-DPATH3=d:\app\path3
app.MainClass
上面参数行表示启动一个java虚拟机,java虚拟机在完成相关初始化工作后,必须创建一个SystemClassLoader用于装载应用相关的组件,由于自定义的类装载器SmartClassLoader也是标准的java类文件,虚拟机通过-cpsmartclassloader.jar通知虚拟机可以从smartclassloader.jar中装载。初始化SmartClassLoader之后,java虚拟机开始装载应用相关组件,由于指定java.system.class.loader为SmartClassLoader,所以虚拟机会通过SmartClassLoader来装载运行时所有必须的java组件。
步骤204、所述自定义的类装载器装载类文件。
自定义的类装载器首先请求上一级的应用类装载器装载java虚拟机自身的标准组件,如果没有找到相关文件,则表示该类文件属于应用程序自己的jar文件,则所述自定义类装载器根据生成的索引文件装载类文件。所述自定义的类装载器根据生成的索引文件查找对应的jar文件,从所述jar文件中确定要装载的类文件,装载所述确定的类文件。
进一步,为了加快文件的查找速度,提高系统启动时装载类文件的效率,根据jar文件命中率缓存确定数量的jar文件句柄,避免文件的频繁打开与关闭操作影响系统启动的效率。其中,所述确定数量的jar文件句柄根据配置缓存的大小确定,本发明并不进行精确的限定。由于本发明不再采用顺序查找、装载类文件的方法,因此,打开的jar文件不会太多,即使缓存所有打开jar文件句柄,也不会超出操作系统的限制,不会引起系统发生异常。
本发明采用自定义的类装载器重载类文件的查找、装载方法,采用索引文件查找类文件的方法替换现有技术中的根据类路径顺序查找类文件的方法,装载类文件时不需要打开很多的jar文件,不会导致启动时超出操作系统命令上限。提高了启动时的效率,并且本发明所生成的索引文件不存在相对路径的限制,可以与第三方系统集成。
参照图3,示出了图2所示本发明实施例中步骤202生成索引文件的具体步骤流程图,包括步骤:
步骤2021、打开第一个路径,进入步骤2022。
步骤2022、逐个打开所述路径下的所有jar文件,针对每个jar文件,进入步骤2023。
步骤2023、递归查找打开的jar文件中的每个目录,如果所述目录下包含类文件,则生成所述目录与jar文件的映射。
下面以实例对此进行详细说明:
假设C3.jar中包含com.app.MainClass这个类文件,根据java规范,这个类文件必须保存在C3.jar中的com/app目录下,所述生成的映射为com/app→C3.jar,如果该jar包中存在多个目录,可以生成多个这样的映射,如:com/app/client→C3.jar、com/erp→A1.jar。在索引文件(index.lst)中的体现形式就是:
com/app=${PATH3}/C3.jar
com/app/client=${PATH3}/C3.jar
com/erp=${PATH1}/A1.jar
步骤2024、判断是否存在下一个路径,有则重复步骤2022、2023;无则进入步骤2025。
步骤2025、根据所述生成的映射生成索引文件。
以下为一个最终生成的索引文件的实例:
com/eas/app=${PATH1}/A1.jar;${PATH2}/B5.jar
com/app=${PATH3}/C3.jar
com/erp=${PATH1}/A1.jar
com/app/client=${PATH3}/C3.jar;${PATH1}/A3.jar
参照图4,示出了图2所示本发明实施例中步骤204中所述自定义的类装载器装载类文件的方法流程图,包括步骤:
步骤2041、Java虚拟机通知自定义的类装载器要装载的类。
因为java程序是动态运行的,只有当调用到类文件时才装载类文件中的字节码。Java虚拟机支持自定义方式扩展虚拟机查找类文件。当程序运行时需要调用某个类的功能时,虚拟机通知类装载器装载该类,此时虚拟机告诉类装载器需要装载的类的名称。
步骤2042、自定义的类装载器请求上一级的应用类装载器装载所述类。
自定义的类装载器首先请求上一级的应用类装载器装载类类文件,此时虚拟机自身的标准组件类文件被所述应用类装载器装载,如果没有找到相关文件,则表示所述类属于应用程序自身的jar文件,装载不成功,进入步骤2043。
步骤2043、自定义的类装载器解析该类对应的包名。
包是指类文件的名称空间,在物理存储上与文件系统的目录对应,此处的包名也即索引文件中的目录。
自定义的类装载器根据类的名称解析对应的java包名,如com.app.MainClass的包名解析为com.app。
步骤2044、根据所述包名,从生成的索引文件中确定对应的jar文件。
根据解析得到的包名,从生成的索引文件中查找该包对应的jar文件。根据前面生成的索引文件可知:com.app对应的jar文件为${PATH3}/C3.jar,com.eas.app对应的jar文件为${PATH1}/A1.jar和${PATH2}/B5.jar。
步骤2045、判断所述jar文件中是否包含对应的类文件,有则装载确定的类文件。
针对步骤2044中查找到的jar文件,查找该jar文件中是否包含对应的类文件,查找到所述类文件则装载,否则进入步骤2046。
步骤2046、针对下一个jar文件,查找该jar文件中是否包含对应的类文件,进入步骤2045,重复此步骤,直至所述类文件装载成功。
通过所述方法装载类文件,能够快速地找到类文件对应的jar文件,而避免了按顺序循环查找,提高了系统启动时类文件的装载效率。
参照图5,示出了本发明实施例类文件装载系统的结构框图,包括:
替换单元501,用于自定义一个类装载器替换java虚拟机默认的系统类装载器。
通过在java启动命令中设置自定义的类装载器,用所述自定义的类装载器替换虚拟机默认的系统类装载器。java虚拟机支持自定义方式扩展虚拟机查找类文件的行为,所述自定义的类装载器继承自虚拟机的类装载器。自定义的类装载器遵循java标准,但是重载了标准类装载器查找、装载类文件的方法。
索引文件生成单元502,根据自定义的类装载器规则,生成java应用所需jar文件的索引文件。
初始化单元503,用于当Java虚拟机启动所述自定义的类装载器时,初始化自定义类装载器。
编写java应用的启动脚本,在执行java的程序参数中通知虚拟机运行java程序时使用所述自定义的类装载器。
第一装载单元504,用于自定义类装载器装载类文件。
自定义的类装载器首先请求上一级的应用类装载器装载java虚拟机自身的标准组件,如果没有找到相关文件,则表示该类文件属于应用程序自己的jar文件,则所述自定义类装载器根据生成的索引文件装载类文件。所述自定义的类装载器根据生成的索引文件查找对应的jar文件,从所述jar文件中确定要装载的类文件,装载所述确定的类文件。
参照图6,示出了图5中第一装载单元的组成结构图,包括:
请求单元601,用于请求上一级应用类装载器装载类文件。
判断单元602,用于判断上一级应用类装载器装载类文件是否成功。
第二装载单元603,用于所述自定义类的类装载器根据索引文件装载类文件。
如果判断单元602判断上一级应用类装载器装载不成功,则表示该类文件属于应用程序自己的jar文件,则所述自定义类装载器启动第二装载单元根据生成的索引文件装载类文件。
由于图5、图6所示系统与图2、图3、图4所示方法对应,因此,为了节约篇幅,系统中未详尽之处可参照方法中的相应部分。
以上对本发明所提供的一种类文件装载方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种类文件装载方法,其特征在于,包括:
自定义一个类装载器替换java虚拟机默认的系统类装载器;
根据自定义的类装载器规则,生成java应用所需jar文件的索引文件;
Java虚拟机启动所述自定义的类装载器,初始化自定义类装载器;
自定义类装载器装载类文件。
2.如权利要求1所述类文件装载方法,其特征在于,所述自定义类装载器装载类文件的具体步骤为:
自定义类装载器请求上一级的应用类装载器装载类文件,如果所述应用类装载器装载不成功,则:
自定义类的类装载器根据所述索引文件装载类文件。
3.如权利要求2所述类文件装载方法,其特征在于:
所述自定义的类装载器根据生成的索引文件查找对应的jar文件,从所述jar文件中确定要装载的类文件,装载所述确定的类文件。
4.如权利要求3所述类文件装载方法,其特征在于,还包括:
根据类文件被自定义的类装载器装载的命中率缓存确定数量的jar文件句柄。
5.如权利要求1所述类文件装载方法,其特征在于,所述自定义类装载器装载类文件的具体步骤包括:
Java虚拟机通知自定义的类装载器要装载的类;
自定义的类装载器请求上一级的应用类装载器装载所述类,如果装载不成功,则:
自定义的类装载器解析该类对应的包名
根据所述包名,从生成的索引文件中确定对应的jar文件;
判断所述jar文件中是否包含对应的类文件,有则装载,否则:
判断下一个jar文件中是否包含对应的类文件,重复上一步,完成类文件的装载。
6.如权利要求1所述类文件装载方法,其特征在于,所述生成java应用所需jar文件的索引文件的具体步骤包括:
扫描每个路径下的所有jar文件,根据每个jar文件中的每个目录生成该目录到jar文件名的映射,在当前路径下生成索引文件。
7.如权利要求6所述类文件装载方法,其特征在于,所述在当前路径下生成索引文件的具体步骤包括:
打开第一/下一个路径;
逐个打开所述路径下的所有jar文件;
递归查找所述打开的jar文件中的每个目录,如果该目录下包括类文件,则生成该目录与jar文件的映射;
根据所述生成的映射生成索引文件。
8.根据权利要求1所述类文件装载方法,其特征在于,还包括:
当java应用所需的jar文件变化时,则重新生成java应用所需jar文件的索引文件。
9.一种类文件装载系统,其特征在于,包括:
替换单元,用于自定义一个类装载器替换java虚拟机默认的系统类装载器;
索引文件生成单元,根据自定义的类装载器规则,生成java应用所需jar文件的索引文件;
初始化单元,用于当Java虚拟机启动所述自定义的类装载器时,初始化自定义类装载器;
第一装载单元,用于自定义类装载器装载类文件。
10.如权利要求9所述类装载系统,其特征在于,所述第一装载单元包括:
请求单元,用于请求上一级应用类装载器装载类文件;
判断单元,用于判断上一级应用类装载器装载类文件是否成功;
第二装载单元,用于所述自定义类的类装载器根据索引文件装载类文件。
CNB2007101638950A 2007-10-11 2007-10-11 一种类文件装载方法和系统 Active CN100549958C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101638950A CN100549958C (zh) 2007-10-11 2007-10-11 一种类文件装载方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101638950A CN100549958C (zh) 2007-10-11 2007-10-11 一种类文件装载方法和系统

Publications (2)

Publication Number Publication Date
CN101126988A true CN101126988A (zh) 2008-02-20
CN100549958C CN100549958C (zh) 2009-10-14

Family

ID=39095037

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101638950A Active CN100549958C (zh) 2007-10-11 2007-10-11 一种类文件装载方法和系统

Country Status (1)

Country Link
CN (1) CN100549958C (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073525A (zh) * 2011-01-20 2011-05-25 中兴通讯股份有限公司 基于Java平台的Web业务系统的动态升级方法及装置
CN105045642A (zh) * 2015-08-31 2015-11-11 北京金山安全软件有限公司 一种自定义类的加载方法及装置
CN105718289A (zh) * 2016-01-21 2016-06-29 腾讯科技(深圳)有限公司 一种组件关系建立方法及其设备
CN107357929A (zh) * 2017-07-27 2017-11-17 广东欧珀移动通信有限公司 文件读取方法、移动终端及可读存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073525A (zh) * 2011-01-20 2011-05-25 中兴通讯股份有限公司 基于Java平台的Web业务系统的动态升级方法及装置
CN102073525B (zh) * 2011-01-20 2016-03-02 中兴通讯股份有限公司 基于Java平台的Web业务系统的动态升级方法及装置
CN105045642A (zh) * 2015-08-31 2015-11-11 北京金山安全软件有限公司 一种自定义类的加载方法及装置
CN105045642B (zh) * 2015-08-31 2018-09-25 北京金山安全软件有限公司 一种自定义类的加载方法及装置
CN105718289A (zh) * 2016-01-21 2016-06-29 腾讯科技(深圳)有限公司 一种组件关系建立方法及其设备
CN107357929A (zh) * 2017-07-27 2017-11-17 广东欧珀移动通信有限公司 文件读取方法、移动终端及可读存储介质

Also Published As

Publication number Publication date
CN100549958C (zh) 2009-10-14

Similar Documents

Publication Publication Date Title
US6272674B1 (en) Method and apparatus for loading a Java application program
EP4099152B1 (en) Extending a virtual machine instruction set architecture
US8510710B2 (en) System and method of using pooled thread-local character arrays
US20090307292A1 (en) Dynamically changing a garbage collector in a managed runtime system
CN100530108C (zh) 一种调用函数的方法及系统
US7949848B2 (en) Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program
CN1829977B (zh) 利用一个栈跟踪高速缓存器改善垃圾收集的性能的方法和装置
CN106033370B (zh) 64位Java虚拟机的实现方法及装置
US7765524B2 (en) Method and system for global constant management
CN101446903A (zh) 构件自动分类的方法
US7600223B2 (en) Abstracted managed code execution
CN100549958C (zh) 一种类文件装载方法和系统
US9477496B2 (en) Method and apparatus for loading classes and re-organizing class archives
Bhattacharya et al. Improving the performance of JVM startup using the shared class cache
CN113867832B (zh) 动态修改业务数据逻辑方法、系统、计算机设备及介质
US6901591B1 (en) Frameworks for invoking methods in virtual machines
US20060101468A1 (en) Cooperative threading in a managed code execution environment
US20200356384A1 (en) Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
US8341606B2 (en) Method of invoking inlined method and java virtual machine using the method
US20060101439A1 (en) Memory management in a managed code execution environment
US10848410B2 (en) Ranking service implementations for a service interface
US7703108B2 (en) Native code isolation in a multi-tasking Java virtual machine
KR101140522B1 (ko) 객체 관리 시스템 및 방법
US6934726B2 (en) Storing and retrieving of field descriptors in Java computing environments
Bhattacharya Enhancing the usage of the Shared Class Cache

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant