專利名稱:基于緩存的cad文件數據卸載方法及裝置的制作方法
技術領域:
本發明屬于計算機領域,涉及一種基于緩存的CAD文件數據卸載方法及裝置。
背景技術:
隨著三維CAD軟件在制造業,尤其是在裝備業的廣泛應用,軟件所處理的模型也 在不斷增大。由最初的幾百個零件的減速器模型,到現在的幾萬個零部件的整車模型和大 型機械總裝,使得模型數據文件由原來的幾百KB增加到幾百MB。于是就對軟件性能和內存 使用量提出了新的要求。例如在使用一個有100多個零件的減速器裝配的過程中,占用內存小于100MB, 而在使用一個有3萬個零件的大型機械裝配的過程中,需要占用的內存接近2GB。這是一般 用戶所無法忍受的。盡管用戶可以通過提高硬件配置在一定程度上提高速度,解決內存消 耗問題,但對于零件數上萬的大裝配,僅僅提升硬件配置的效果就不再那么明顯了,而且在 Windows XP 32位系統下,每個進程所占用的內存最大限制是3GB,超過這個限制時,軟件將 直接異常退出。因此,必須從軟件算法上做出根本性改進,這樣才能使軟件在性能上有質的 提升,從而滿足企業的進一步的需要。對于現有技術中在使用大量CAD文件數據的過程中占用內存過多,導致軟件運行 速度逐漸變慢,甚至有可能因內存不足而發生異常的問題,目前尚未提出有效解決方案。
發明內容
本發明的目的是提供一種基于緩存的CAD文件數據卸載方法及裝置,用以解決在 使用大量CAD文件數據的過程中占用內存過多,導致軟件運行速度逐漸變慢,甚至有可能 因內存不足而發生異常的問題。為了實現上述目的,根據本發明的一個方面,提供一種基于緩存的CAD文件數據 卸載方法,本發明采用以下技術方案—種基于緩存的CAD文件數據卸載方法包括如下步驟a 獲取內存中CAD文件各個數據對象的訪問率;b 將訪問率與預設訪問率比較;以及c 當訪問率小于預設訪問率時,將CAD文件數據的對象從內存中卸載到緩存中。進一步地,步驟a包括創建回收定時器;以及通過回收定時器計算訪問率。進一步地,回收定時器計算訪問率包括將加載CAD文件數據的零件容器記錄到加載列表中;根據加載列表判斷CAD文件數據是否被訪問,并在CAD文件數據被訪問時,更新 CAD文件數據的最后被訪問時間和訪問次數;通過回收定時器檢測加載列表,并獲取CAD文件數據的檢測時間和更新時間;通過檢測時間和更新時間計算CAD文件數據的空閑時間;以及根據空閑時間和被訪問次數計算訪問率;其中,上述步驟中包括如下計算的公式空閑時間=檢測時間_更新時間;訪問率=訪問次數/空閑時間。進一步地,步驟c中,將CAD文件數據從內存中卸載到緩存中包括通過加載列表中的零件容器查找訪問率小于預設訪問率的CAD文件數據;以及將 訪問率小于預設訪問率的CAD文件數據的對象從內存中卸載到緩存中。進一步地,零件容器包括零件組件容器。進一步地,步驟b包括在訪問率大于預設訪問率時,返回步驟a。根據本發明的另外一個方面,提供一種基于緩存的CAD文件數據卸載裝置,本發 明采用以下技術方案一種基于緩存的CAD文件數據卸載裝置,包括獲取模塊,用于獲取內存中CAD文件各個數據對象的訪問率;比較模塊,用于將訪問率與預設訪問率比較;以及卸載模塊,用于在訪問率小于預設訪問率時,將訪問率小于預設訪問率的CAD文 件數據的對象從內存中卸載到緩存中。進一步地,獲取模塊包括創建模塊,用于創建回收定時器;以及計算模塊,用于 通過回收定時器計算訪問率。進一步地,計算模塊包括記錄模塊,用于將加載CAD文件數據的零件容器記錄到加載列表中;判斷模塊,用于根據加載列表判斷CAD文件數據是否被訪問,并在CAD文件數據被 訪問時,更新CAD文件數據的最后被訪問時間和訪問次數;檢測模塊,用于通過回收定時器檢測加載列表,并獲取CAD文件數據的檢測時間 和更新時間;第一計算子模塊,用于通過檢測時間和更新時間計算CAD文件數據的空閑時間; 以及第二計算子模塊,用于根據空閑時間和訪問次數計算訪問率;其中,包括如下計算 的公式空閑時間=檢測時間_更新時間;訪問率=訪問次數/空閑時間。進一步地,卸載模塊包括查找模塊,用于通過加載列表中的零件容器查找訪問率小于預設訪問率的文件數 據;以及卸載子模塊,將文件數據的對象從內存中卸載緩存中。通過本發明,采用基于緩存的CAD文件數據卸載方法包括如下步驟a 獲取內存 中CAD文件各個數據對象的訪問率;b 將訪問率與預設訪問率比較;以及c 當訪問率小于 預設訪問率時,將CAD文件數據的對象從內存中卸載到緩存中,解決了現有技術中在使用 大量CAD文件數據的過程中占用內存過多,導致軟件運行速度逐漸變慢,甚至有可能因內 存不足而發生異常的問題,進而達到了在使用大量CAD文件數據的過程中節約內存,來提 高三維CAD系統的總體運行效率和性能的效果。
此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發 明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中圖1是根據本發明實施例基于緩存的CAD文件數據卸載裝置的結構示意5
圖2是根據本發明實施例基于緩存的CAD文件數據卸載裝置中計算模塊的結構示 意圖;圖3是根據本發明實施例基于緩存的CAD文件數據卸載方法的流程圖;圖4是根據本發明優選實施例基于緩存的CAD文件數據卸載方法的流程圖;圖5是根據本發明實施例的CAD文件數據中零件內存結構的示意圖。
具體實施例方式需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相 互組合。下面將參考附圖并結合實施例來詳細說明本發明。圖1是根據本發明實施例基于緩存的CAD文件數據卸載裝置的結構示意圖;圖2 是根據本發明實施例基于緩存的CAD文件數據卸載裝置中計算模塊的結構示意圖。如圖1 所示,該裝置可以包括獲取模塊1,用于獲取內存中CAD文件各個數據對象的訪問率;比較 模塊3,用于將訪問率與預設訪問率比較;以及卸載模塊5,用于在訪問率小于預設訪問率 時,將訪問率小于預設訪問率的CAD文件數據從內存中卸載到緩存中。在上述實施例中,CAD文件數據在使用的過程中一些訪問率低的數據占用過多的 內存,獲取模塊可以對使用中的各個數據的訪問率進行統計,從而獲得各個數據的訪問率。 比較模塊可以將各個數據的訪問率與CAD系統預設訪問率進行比較,如果某個數據的訪問 率低于CAD系統預設訪問率,則將該數據從內存中卸載到緩存中。獲取模塊定時對使用中 的各個數據的訪問率進行統計,每統計一次后,比較模塊將訪問率與預設訪問率進行比較, 重復上述卸載過程。通過上述實施方案,本發明能夠解決在使用大量CAD文件數據的過程 中占用內存過多,導致軟件運行速度逐漸變慢,甚至有可能因內存不足而發生異常的問題, 節約了系統處理CAD文件數據過程中所占用的內存,進一步地提高了三維CAD系統的總體 運行效率和性能。優選的,上述實施例中的獲取模塊1可以包括創建模塊11,用于創建回收定時 器;以及計算模塊13,用于通過回收定時器計算訪問率。該實施例中的回收定時器每隔一 段時間會遍歷一次加載列表,計算空閑時間,空閑時間就是當前的檢查時間減去最后一次 訪問時間,使得系統可以統一管理獲取的空閑時間,提高了系統的調用效率。優選的,如圖2所示,本發明上述實施例中的計算模塊13可以包括記錄模塊 131,用于將加載CAD文件數據的零件容器記錄到CAD系統的加載列表中;判斷模塊133,用 于根據加載列表判斷CAD文件數據是否被訪問,并在CAD文件數據被訪問時,更新CAD文件 數據的最后被訪問時間和訪問次數;檢測模塊135,用于通過回收定時器檢測加載列表,并 獲取CAD文件數據的檢測時間和更新時間;第一計算子模塊137,用于通過檢測時間和更新 時間計算CAD文件數據的空閑時間;以及第二計算子模塊139,用于根據空閑時間和訪問次 數計算訪問率。該實施例通過回收定時器定時更新加載列表,提高了系統的性能。優選的,比較模塊3可以包括返回模塊31,用于在訪問率大于預設訪問率時,返 回計算模塊。在上述實施例中,當訪問率大于系統的預設訪問率時,返回到計算模塊13,計算模 塊13重新通過回收定時器計算訪問率。優選的,卸載模塊5可以包括查找模塊51,用于通過加載列表中的零件容器查找訪問率小于預設訪問率的文件數據;以及卸載子模塊53,將文件數據從內存中卸載緩存 中。圖3是根據本發明實施例基于緩存的CAD文件數據卸載方法的流程圖。該方法包 括如下步驟步驟a 通過圖1中的獲取模塊1來獲取內存中CAD文件各個數據對象的訪問率;步驟b 通過圖1中的比較模塊3實現將訪問率與預設訪問率比較;以及步驟c 通過圖1中的卸載模塊5來實現,當訪問率小于預設訪問率時,將CAD文 件數據從內存中卸載到緩存中。在上述實施例中,CAD文件數據在使用的過程中一些訪問率低的數據占用過多的 內存,步驟a可以對使用中的各個數據的訪問率進行統計,從而獲得各個數據的訪問率。步 驟b可以將各個數據的訪問率與CAD系統預設訪問率進行比較,如果某個數據的訪問率低 于CAD系統預設訪問率,則通過步驟c將該數據從內存中卸載到緩存中。步驟a定時對使用 中的各個數據的訪問率進行統計,每統計一次后,步驟b將訪問率與預設訪問率進行比較, 重復上述步驟c的卸載過程。本發明能夠解決在使用大量CAD文件數據的過程中占用內存 過多,導致軟件運行速度逐漸變慢,甚至有可能因內存不足而發生異常的問題,節約了系統 處理CAD文件數據過程中所占用的內存,進一步地提高了三維CAD系統的總體運行效率和 性能。本發明上述實施例中的步驟a可以包括創建回收定時器;以及通過回收定時器 計算訪問率。優選的,通過回收定時器計算訪問率的步驟可以包括將加載CAD文件數據的零 件容器記錄到加載列表中;根據加載列表判斷CAD文件數據是否被訪問,并在CAD文件數據 被訪問時,更新CAD文件數據的最后被訪問時間和訪問次數;通過回收定時器檢測加載列 表,并獲取CAD文件數據的檢測時間和更新時間;通過檢測時間和更新時間計算CAD文件數 據的空閑時間;以及根據空閑時間和被訪問次數計算訪問率;其中,上述步驟中包括如下 計算的公式空閑時間=檢測時間更新時間;訪問率=訪問次數/空閑時間。在上述實施例的步驟c中,步驟將CAD文件數據從內存中卸載到緩存中可以包括 通過加載列表中的零件容器查找訪問率小于預設訪問率的CAD文件數據;以及將訪問率小 于預設訪問率的CAD文件數據的對象從內存中卸載到緩存中。優選的,上述任意一個實施例中的零件容器可以包括零件組件容器。本發明圖3所示的上述實施例中,步驟b可以包括在訪問率大于預設訪問率時, 返回步驟a。圖4是根據本發明優選實施例基于緩存的CAD文件數據卸載方法的流程圖。結合 圖3和圖4所示,本發明的詳細實施例如下步驟S101,CAD軟件在啟動后會創建一個回收定時器,當加載CAD文件數據時,零 件容器將已被加載的零件記錄到CAD系統中的加載列表中。步驟S103,回收定時器每隔一段時間會遍歷一次加載列表。根據加載列表判斷零 件或零件組是否被訪問,并在零件或零件組被訪問時,更新零件或零件組最后被訪問時間 和訪問次數。通過回收定時器檢測加載列表,并獲取零件或零件組的檢測時間和更新時間。 通過檢測時間和更新時間計算零件或零件組的空閑時間(空閑時間就是當前檢測時間減去最后一次訪問時間),計算的公式為空閑時間=檢測時間_更新時間。步驟S105,根據空閑時間和訪問次數計算訪問率,計算的公式為訪問率=訪問 次數/空閑時間。訪問率受訪問次數和空閑時間兩個因素影響,當訪問次數越多,那么以后 再次訪問他的可能性越大,空閑時間越大,那么再次訪問他的可能性越少。步驟S107,當訪問率小于預設訪問率時,就判斷這個零件或零件組件暫時不會被 使用,可以從內存中卸載到緩存中。如果訪問率大于預設訪問率時,返回S103步驟。步驟S109,當訪問率小于預設訪問率時,零件或零件組件將從內存中卸載到緩存 中。但記載有該零件或零件組件起始位置和大小的零件容器或零件組件容器不被卸載掉 的。當我們需要重新訪問某個零件或零件組時,通過零件容器或零件組件容器重新尋 找零件或零件組件在文件數據流中的位置,從而實現零件或零件組件的加載。當打開CAD文件數據時,文件數據流都放入緩存中,同時CAD軟件將文件數據進行 加載,通常CAD處理的裝備包含有大量的零件,同時一個零件包含有多個零件組件,我們在 對裝置進行操作的過程當中,對某些零件或零件組件訪問率很高,對某些零件或零件組件 訪問率很低,甚至不訪問,針對此種情況,通過本發明上述實施例步驟實現基于緩存的CAD 文件數據卸載方法將訪問率很低或是不訪問的零件進行卸載,從而提高CAD系統的運行效 率。圖5是根據本發明實施例的CAD文件數據中零件內存結構的示意圖。如圖5所示, 一個零件由若干個零件組件組成,每個零件組件中存儲了零件某種類型的數據。為了能夠 實現動態加載,分別用一個輕量級的零件容器來包裝零件對象,該零件容器記載有該零件 對象在文件數據流中的起始位置和大小;用一個輕量級的零件組件容器來包裝零件組件對 象,該零件組件容器記載有該零件組件對象在數據流中的起始位置和大小。零件容器和零 件組件容器都是輕量級數據,占用內存很少,零件對象和零件組件對象是重量級數據,占用 內存較多。在訪問重量級數據內存時,必須經過輕量級的容器,也就是說外面無法直接訪問 重量級數據的內存。如果要想取得某個零件的顏色數據,必須首先通過零件容器訪問該零件,同時零 件容器會判斷它所包裝的零件是否在內存中,如果不在,就會通過緩存來構建這個零件對 象,然后,零件對象會找到存儲顏色的零件組件容器,零件組件容器判斷它所包裝的零件組 件是否在內存,如果不在,同樣使用緩存來構建零件組件對象,然后由零件組件對象取得該 零件的顏色數據。此時,就會有一個零件對象和一個零件組件對象被加載到內存。通過上述實施例實現,外部訪問零件數據時,必須經過零件容器與零件組件容器, 因此即使零件和零件組件對象從內存中卸載掉,也不會造成非法內存訪問。當外部真正請 求零件數據時,又會通過動態加載技術,由容器通過數據流緩存重新構建零件和零件組件 對象,達到動態加載與動態卸載的完美結合。從以上的描述中,可以看出,本發明實現了如下技術效果針對現有技術的問題, 本發明基于緩存的動態數據卸載技術,解決了文件打開后,使用過程中占用內存過多的問 題。使得三維CAD軟件在技術上又進一步適應應用上的需求,為企業生產提供有力的技術保障。顯然,本領域的技術人員應該明白,上述的本發明的各模塊或各步驟可以用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成 的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲 在存儲裝置中由計算裝置來執行,或者將它們分別制作成各個集成電路模塊,或者將它們 中的多個模塊或步驟制作成單個集成電路模塊來實現。這樣,本發明不限制于任何特定的 硬件和軟件結合。 以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技 術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修 改、等同替換、改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種基于緩存的CAD文件數據卸載方法,其特征在于,包括 a 獲取內存中CAD文件各個數據對象的訪問率;b 將所述訪問率與預設訪問率比較;以及c 當所述訪問率小于所述預設訪問率時,將所述CAD文件數據的對象從所述內存中卸 載到所述緩存中。
2.根據權利要求1所述的CAD文件數據卸載方法,其特征在于,所述步驟a包括 創建回收定時器;以及通過所述回收定時器計算所述訪問率。
3.根據權利要求2所述的CAD文件數據卸載方法,其特征在于,所述通過所述回收定時 器計算所述訪問率包括將加載所述CAD文件數據的零件容器記錄到加載列表中;根據所述加載列表判斷所述CAD文件數據是否被訪問,并在所述CAD文件數據被訪問 時,更新所述CAD文件數據的最后被訪問時間和訪問次數;通過所述回收定時器檢測所述加載列表,并獲取所述CAD文件數據的檢測時間和更新 時間;通過所述檢測時間和更新時間計算所述CAD文件數據的空閑時間,計算公式為空閑 時間=檢測時間-更新時間;以及根據所述空閑時間和所述被訪問次數計算所述訪問率,計算公式為訪問率=訪問次 數/空閑時間。
4.根據權利要求3所述的CAD文件數據卸載方法,其特征在于,在所述步驟c中,將所 述CAD文件數據從內存中卸載到緩存中包括通過所述加載列表中的所述零件容器查找訪問率小于所述預設訪問率的CAD文件數 據;以及將所述訪問率小于所述預設訪問率的CAD文件數據的對象從所述內存中卸載到所述緩存中。
5.根據權利要求3或4所述的CAD文件數據卸載方法,其特征在于,所述零件容器包括 零件組件容器。
6.根據權利要求1所述的CAD文件數據卸載方法,其特征在于,所述步驟b包括 在所述訪問率大于所述預設訪問率時,返回步驟a。
7.一種基于緩存的CAD文件數據卸載裝置,其特征在于,包括 獲取模塊,用于獲取內存中CAD文件各個數據對象的訪問率; 比較模塊,用于將所述訪問率與預設訪問率比較;以及卸載模塊,用于在所述訪問率小于所述預設訪問率時,將所述訪問率小于所述預設訪 問率的CAD文件數據的對象從所述內存中卸載到所述緩存中。
8.根據權利要求7所述的CAD文件數據卸載裝置,其特征在于,所述獲取模塊包括 創建模塊,用于創建回收定時器;以及計算模塊,用于通過所述回收定時器計算所述訪問率。
9.根據權利要求8所述的CAD文件數據卸載裝置,其特征在于,所述計算模塊包括 記錄模塊,用于將加載所述CAD文件數據的零件容器記錄到加載列表 中;判斷模塊,用于根據所述加載列表判斷所述CAD文件數據是否被訪問,并在所述CAD文 件數據被訪問時,更新所述CAD文件數據的最后被訪問時間和訪問次數;檢測模塊,用于通過所述回收定時器檢測所述加載列表,并獲取所述CAD文件數據的 檢測時間和更新時間;第一計算子模塊,用于通過所述檢測時間和更新時間計算所述CAD文件數據的空閑時 間,計算公式為空閑時間=檢測時間-更新時間;以及第二計算子模塊,用于根據所述空閑時間和所述訪問次數計算所述訪問率,計算公式 為訪問率=訪問次數/空閑時間。
10.根據權利要求7所述的CAD文件數據卸載裝置,其特征在于,所述卸載模塊包括 查找模塊,用于通過所述加載列表中的所述零件容器查找訪問率小于所述預設訪問率 的文件數據;以及卸載子模塊,將所述文件數據的對象從所述內存中卸載所述緩存中。
全文摘要
本發明公開了一種基于緩存的CAD文件數據卸載方法及裝置,其中,該基于緩存的CAD文件數據卸載方法包括a獲取內存中CAD文件各個數據對象的訪問率;b將訪問率與預設訪問率比較;以及c當訪問率小于預設訪問率時,將CAD文件數據的對象從內存中卸載到緩存中。通過本發明,能夠減少使用過程中大量CAD文件數據占用的內存,提高軟件運行的總體效率。
文檔編號G06F17/30GK102110147SQ20111003929
公開日2011年6月29日 申請日期2011年2月16日 優先權日2011年2月16日
發明者郭瑞軍 申請人:北京數碼大方科技有限公司