[發明專利]類查詢方法及裝置有效
| 申請號: | 201910883259.8 | 申請日: | 2019-09-18 |
| 公開(公告)號: | CN112612530B | 公開(公告)日: | 2022-05-17 |
| 發明(設計)人: | 張清華 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F9/448 |
| 代理公司: | 北京三高永信知識產權代理有限責任公司 11138 | 代理人: | 顏晶 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 查詢 方法 裝置 | ||
本申請公開了一種類查詢方法及裝置,屬于計算機技術領域。該方法包括:在運行已加載的庫文件的過程中,在出現對表的一個表項的引用時,獲取該表項中的引用信息,對該表項的引用是在編譯生成庫文件時將對類符號的引用進行修改得到,該表項中存儲有該類符號的查詢標識和引用信息;當該表項中的引用信息是指定信息時,根據該表項中的查詢標識,將該表項中的引用信息更新為該類符號的符號標識,從該表項中獲取該類符號的符號標識,根據該類符號的符號標識獲取該類符號的已加載的類信息;當該表項中的引用信息是該類符號的符號標識時,根據該類符號的符號標識獲取該類符號的已加載的類信息。本申請可以極大地減少運行過程耗時。
技術領域
本申請涉及計算機技術領域,特別涉及一種類查詢方法及裝置。
背景技術
對于使用需要動態加載類的動態語言的計算機,其在運行已加載的庫文件的過程中,當出現對某個類的引用時,需要先獲取該類的已加載的類信息的存儲地址,再根據該存儲地址,獲取該類的已加載的類信息。
目前,獲取類的已加載的類信息的存儲地址的操作通過類查詢過程實現。具體地,根據類的類名在哈希表中查詢該類的已加載的類信息的存儲地址;如果未查詢到該存儲地址,則先加載該類,以得到該存儲地址,再將該類的類名和該存儲地址存儲到哈希表中,然后從哈希表中獲取該存儲地址;如果查詢到該存儲地址,則直接從哈希表中獲取該存儲地址。
這種情況下,對于在運行已加載的庫文件的過程中出現的對某個類的引用,不管是首次引用還是后續引用,都會觸發類查詢過程,即都需要根據該類的類名從哈希表中查詢該類的已加載的類信息的存儲地址,從而導致運行過程耗時較長。
發明內容
本申請提供了一種類查詢方法及裝置,可以解決相關技術中運行過程耗時較長的問題。
所述技術方案如下:
第一方面,提供了一種類查詢方法,所述方法包括:
在運行已加載的庫文件的過程中,在出現對表的一個表項的引用時,獲取所述表項中的引用信息。當所述表項中的引用信息是指定信息時,根據所述表項中的所述類符號的查詢標識,將所述表項中的引用信息更新為所述類符號的符號標識,從所述表項中獲取所述類符號的符號標識,根據所述類符號的符號標識獲取所述類符號的已加載的類信息;當所述表項中的引用信息是所述類符號的符號標識時,根據所述類符號的符號標識獲取所述類符號的已加載的類信息。
其中,所述對所述表項的引用是在編譯生成所述庫文件時將對類符號的引用進行修改得到,所述表項中的引用信息在編譯生成所述庫文件時被設置為指定信息,所述表項中存儲有所述類符號的查詢標識和引用信息,所述類符號的查詢標識用于查詢所述類符號的符號標識,所述類符號的符號標識用于獲取所述類符號的已加載的類信息。
需要說明的是,該庫文件可以為需要動態加載類的動態語言中使用的文件,該庫文件中可以包括編譯好的供其他程序使用的代碼和數據。
另外,該類符號可以為需要動態加載其類信息的符號,如該類符號可以為類本身、類成員變量、類方法等。該類符號的類信息可以為該類符號的定義中包含的所有信息,如當該類符號為類本身時,該類符號的類信息可以包括類名、類成員變量信息、類方法信息等。
再者,該類符號的查詢標識用于查詢該類符號的符號標識,該類符號的符號標識用于獲取該類符號的已加載的類信息。例如,該類符號的查詢標識可以為該類符號的符號名、符號名的哈希值等,該類符號的符號標識可以為該類符號的已加載的類信息的存儲地址、指針、對象等。
需要說明的是,該引用信息為在后續運行已加載的該庫文件的過程中,在出現對該表項的引用時需要首先獲取的信息,獲取該引用信息后,可以根據該引用信息獲取該類符號的已加載的類信息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910883259.8/2.html,轉載請聲明來源鉆瓜專利網。





