【技术实现步骤摘要】
类查询方法及装置
本申请涉及计算机
,特别涉及一种类查询方法及装置。
技术介绍
对于使用需要动态加载类的动态语言的计算机,其在运行已加载的库文件的过程中,当出现对某个类的引用时,需要先获取该类的已加载的类信息的存储地址,再根据该存储地址,获取该类的已加载的类信息。目前,获取类的已加载的类信息的存储地址的操作通过类查询过程实现。具体地,根据类的类名在哈希表中查询该类的已加载的类信息的存储地址;如果未查询到该存储地址,则先加载该类,以得到该存储地址,再将该类的类名和该存储地址存储到哈希表中,然后从哈希表中获取该存储地址;如果查询到该存储地址,则直接从哈希表中获取该存储地址。这种情况下,对于在运行已加载的库文件的过程中出现的对某个类的引用,不管是首次引用还是后续引用,都会触发类查询过程,即都需要根据该类的类名从哈希表中查询该类的已加载的类信息的存储地址,从而导致运行过程耗时较长。
技术实现思路
本申请提供了一种类查询方法及装置,可以解决相关技术中运行过程耗时较长的问题。所述技术方案 ...
【技术保护点】
1.一种类查询方法,其特征在于,所述方法包括:/n在运行已加载的库文件的过程中,在出现对表的一个表项的引用时,获取所述表项中的引用信息,所述对所述表项的引用是在编译生成所述库文件时将对类符号的引用进行修改得到,所述表项中的引用信息在编译生成所述库文件时被设置为指定信息,所述表项中存储有所述类符号的查询标识和引用信息,所述类符号的查询标识用于查询所述类符号的符号标识,所述类符号的符号标识用于获取所述类符号的已加载的类信息;/n当所述表项中的引用信息是指定信息时,根据所述表项中的所述类符号的查询标识,将所述表项中的引用信息更新为所述类符号的符号标识;从所述表项中获取所述类符号的 ...
【技术特征摘要】
1.一种类查询方法,其特征在于,所述方法包括:
在运行已加载的库文件的过程中,在出现对表的一个表项的引用时,获取所述表项中的引用信息,所述对所述表项的引用是在编译生成所述库文件时将对类符号的引用进行修改得到,所述表项中的引用信息在编译生成所述库文件时被设置为指定信息,所述表项中存储有所述类符号的查询标识和引用信息,所述类符号的查询标识用于查询所述类符号的符号标识,所述类符号的符号标识用于获取所述类符号的已加载的类信息;
当所述表项中的引用信息是指定信息时,根据所述表项中的所述类符号的查询标识,将所述表项中的引用信息更新为所述类符号的符号标识;从所述表项中获取所述类符号的符号标识,根据所述类符号的符号标识获取所述类符号的已加载的类信息;
当所述表项中的引用信息是所述类符号的符号标识时,根据所述类符号的符号标识获取所述类符号的已加载的类信息。
2.如权利要求1所述的方法,其特征在于,所述在运行已加载的库文件的过程中,当出现对表项的引用时,获取所述表项中的引用信息之前,还包括:
在编译生成所述库文件的过程中,对于出现的任意一个类符号,将所述类符号的查询标识和引用信息存储到所述表的一个表项中,并将所述表项中的引用信息设置为指定信息;
将对所述类符号的引用修改为对所述表项的引用。
3.如权利要求1所述的方法,其特征在于,所述指定信息为指定内存地址,所述指定内存地址对应的内存区的保护属性为不可访问,所述当所述表项中的引用信息是指定信息时,根据所述表项中的所述类符号的查询标识,将所述表项中的引用信息更新为所述类符号的符号标识,包括:
当所述表项中的引用信息是所述指定内存地址时,请求访问所述指定内存地址对应的内存区,以触发中断处理,所述中断处理用于获取所述表项中的所述类符号的查询标识,并根据所述类符号的查询标识查询所述类符号的符号标识,将所述表项中的引用信息更新为查询到的所述类符号的符号标识;
相应地,所述从所述表项中获取所述类符号的符号标识,根据所述类符号的符号标识获取所述类符号的已加载的类信息,包括:
在所述中断处理完成后,返回所述获取所述表项中的引用信息的步骤。
4.如权利要求3所述的方法,其特征在于,所述中断处理为段内存错误中断SEGV处理。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
在编译生成所述库文件的过程中,当所述库文件中存在所述类符号的类信息时,将所述表项的索引添加到所述类符号的类信息中。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
在运行已加载的库文件的过程中,接收对所述类符号的查询请求,所述查询请求中携带所述类符号的查询标识;
根据所述类符号的查询标识查询所述类符号的符号标识;
根据所述类符号的符号标识获取所述类符号的已加载的类信息;
当所述类符号的已加载的类信息中包括所述表项的索引时,根据所述表项的索引查找所述表项;
将所述表项中的引...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。