可以將文件等分成兩部分,分別用兩個(gè)private讀取就是2線程。
創(chuàng)新互聯(lián)公司是少有的網(wǎng)站制作、成都做網(wǎng)站、營銷型企業(yè)網(wǎng)站、成都微信小程序、手機(jī)APP,開發(fā)、制作、設(shè)計(jì)、買鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,從2013年創(chuàng)立,堅(jiān)持透明化,價(jià)格低,無套路經(jīng)營理念。讓網(wǎng)頁驚喜每一位訪客多年來深受用戶好評(píng)
內(nèi)存解決方案:不要等程序自動(dòng)GC,自己手動(dòng)釋放不需要內(nèi)存。
缺陷:可能會(huì)浪費(fèi)時(shí)間。
1、可能進(jìn)入了死循環(huán),仔細(xì)檢查代碼有無這種情況。
2、無用的數(shù)據(jù)一直在累積而沒有及時(shí)銷毀,導(dǎo)致內(nèi)存占用越來越大,最終崩潰。要注意對(duì)象隨用隨清,及時(shí) Dispose 掉或調(diào)用 GC.Collect。
這說明你調(diào)用 API 傳參存在問題。
首先有沒有設(shè)置結(jié)構(gòu)體內(nèi)存對(duì)齊?
[StructLayout(LayoutKind.Sequential)] 加了嗎?
COLORREF 不要用 Color 代替,用 int 代替
TCHAR cfFaceName[32] 定義為 Byte 數(shù)組也可以,帶在傳參前,必須初始化為 32 個(gè)長度
首先~~需要確認(rèn)的是,每次讀取花時(shí)間的問題~是在連接上還是在創(chuàng)建實(shí)例上。
如果是在創(chuàng)建實(shí)例上,需要做【單例模式】,建議所有數(shù)據(jù)創(chuàng)建在Module中,并做全局變量。
Cache是一種B/S,的MVC方式。
緩存方式有很多~~~
一種是物理方式(做物理RAM內(nèi)存開避空間)
一種是文件方式(做文件)
如文件方式,較常出現(xiàn)的如MVC的緩存,就是大概原理就是,把不經(jīng)常用到(變化)的數(shù)據(jù)信息放到文件中,采用讀取文件的方式(比訪問數(shù)據(jù)快),存在指定或CurrentDir中。
如果想方便~需要追加一系列狀態(tài)標(biāo)識(shí)~當(dāng)訪問時(shí),觸發(fā)變更,然后在讀取數(shù)據(jù)前,確認(rèn)這個(gè)狀態(tài)是否變動(dòng),如果變動(dòng)說明數(shù)據(jù)庫有變動(dòng),需要再次訪問數(shù)據(jù)庫。如果沒有變動(dòng),則讀取文件。
這種就叫緩存技術(shù)。
當(dāng)然,我說的這種是比較簡單的,還是需要設(shè)計(jì)思想。
不用刻意去釋放局部變量,因?yàn)榫植孔兞块_辟的
內(nèi)存空間會(huì)隨著過程或函數(shù)的結(jié)束而自動(dòng)釋放。
注意:全局變量只在整個(gè)程序結(jié)束時(shí)才會(huì)釋放,
所以盡量少用全局變量。