❶ 內存溢出錯誤怎麼解決
你好,內存溢出可能是病毒作怪,也有可能是程序錯誤.
內存溢出是指系統內存全部被佔用,沒有可用內存分配給新啟動的任務的情況,通常不會導致系統崩潰。
可以擴展一條內存,或者增大虛擬內存的大小
下面以在Windows XP下轉移虛擬內存所在盤符為例介紹虛擬內存的設置方法:
一、手動設置虛擬內存
在默認狀態下,是讓系統管理虛擬內存的,但是系統默認設置的管理方式通常比較保守,在自動調節時會造成頁面文件不連續,而降低讀寫效率,工作效率就顯得不高,於是經常會出現「內存不足」這樣的提示,下面就讓我們自已動手來設置它吧。
①用右鍵點擊桌面上的「我的電腦」圖標,在出現的右鍵菜單中選擇「屬性」選項打開「系統屬性」窗口。在窗口中點擊「高級」選項卡,出現高級設置的對話框.
②點擊「性能」區域的「設置」按鈕,在出現的「性能選項」窗口中選擇「高級」選項卡,打開其對話框。
③在該對話框中可看到關於虛擬內存的區域,點擊「更改」按鈕進入「虛擬內存」的設置窗口。選擇一個有較大空閑容量的分區,勾選「自定義大小」前的復選框,將具體數值填入「初始大
二、量身定製虛似內存
1.普通設置法
根據一般的設置方法,虛擬內存交換文件最小值、最大值同時都可設為內存容量的1.5倍,但如果內存本身容量比較大,比如內存是512MB,那麼它佔用的空間也是很可觀的。所以我們可以這樣設定虛擬內存的基本數值:內存容量在256MB以下,就設置為1.5倍;在512MB以上,設置為內存容量的一半;介於256MB與512MB之間的設為與內存容量相同值。
2.精準設置法
由於每個人實際操作的應用程序不可能一樣,比如有些人要運行3DMAX、Photoshop等這樣的大型程序,而有些人可能只是打打字、玩些小游戲,所以對虛擬內存的要求並不相同,於是我們就要因地制宜地精確設置虛擬內存空間的數值。
①先將虛擬內存自定義的「初始大小」、「最大值」設為兩個相同的數值,比如500MB;
②然後依次打開「控制面板→管理工具→性能」,在出現的「性能」對話框中,展開左側欄目中的「性能日誌和警報」,選中其下的「計數器日誌」,在右側欄目中空白處點擊右鍵,選擇右鍵菜單中的「新建日誌設置」選項;
③在彈出的對話框「名稱」一欄中填入任意名稱,比如「虛擬內存測試」。在出現窗口中點擊「添加計數器」按鈕進入此猛下一個窗口;
④在該窗口中打開「性能對象」的下拉列表,選擇其中的「Paging File」,勾選「從列表中選擇計數器」,並在下方的欄目中選擇「%Usage Peak」;勾選「從列表中選擇範例」,在下方的欄目中選擇「_Total」,再依次點擊「添加→關閉」結束
⑥在右側欄目中可以發現多了一個「虛擬內存測試」項目,如果該項目為紅色則說明還沒有啟動,點擊該項飢扒舉,選擇右鍵菜單中的「啟動」選項即可
接下來運行自己常用的一些應用程序,運行一段時間後,進入日誌文件所在的系統分區下默認爛碧目錄「PerfLogs」,找到「虛擬內存測試_000001.csv」並用記事本程序打開它,在該內容中,我們查看每一欄中倒數第二項數值,這個數值是虛擬內存的使用比率,找到這項數值的最大值,比如圖中的「46」,用46%乘以500MB(前面所設定的虛擬內存數值),得出數值為230MB。
用該數值可以將初始大小設為230MB,而最大值可以根據磁碟空間大小自由設定,一般建議將它設置為最小值的2到3倍。這樣我們就可以將虛擬內存打造得更精準,使自己的愛機運行得更加流暢、更具效率。
小」、「最大值」欄中,而後依次點擊「設置→確定」按鈕即可,最後重新啟動計算機使虛擬內存設置生效。
建議:可以劃分出一個小分區專門提供給虛擬內存、IE臨時文件存儲等使用,以後可以對該分區定期進行磁碟整理,從而能更好提高計算機的工作效率。
三、Windows虛擬內存加速密籍
虛擬內存對於任何版本的Windows而言都是十分重要的。如果設置得當,它將極大地提升電腦的性能和運行速度。可是在默認狀態下,Windows始終將虛擬內存設為物理內存的1.5倍。這樣的話,如果用戶安裝2GB的內存,系統就會騰出高達3GB的硬碟空間作為虛擬內存。但以當前的主流應用軟體和游戲對內存的需要來看,根本沒有必要使用這么多的虛擬內存。那麼,有沒有什麼秘技或絕招可使虛擬內存運用得更有效率或更顯性能呢?
1、分割存於多個硬碟
將虛擬內存設在較快的硬碟上,的確可使虛擬內存的運作更有效率。但是若電腦上兩個硬碟速度一樣快,則應將虛擬內存平均分配在兩個不同的硬碟上(並非同一硬碟的不同分區)。因為同步進行讀寫操作會更有效地提高系統整體的虛擬內存性能。
舉個例子,假設你原本在硬碟C上設置了700MB的虛擬內存,現在你可嘗試重新分配,即把硬碟C改為350MB,硬碟D新增350MB的虛擬內存。理論上這樣做會加快虛擬內存整體的讀寫操作.
2、硬碟需有足夠空間
如果你不是很有經驗的電腦用戶,又或者沒有特殊的使用要求,在Windows XP中選擇「系統管理的大小」的方法來自動處理虛擬內存,一般情況下應該會比選擇「自定義大小」的方法來得安全和穩定。不過,有一點大家必須注意,由於虛擬內存的「頁面文件」(pagefile.sys)會隨著電腦使用過程進行收縮和擴展,為使系統管理虛擬內存能夠進行得順利和更具彈性,我們必須保證分頁文件所在的硬碟擁有足夠的可用空間。
3、最小值等於最大值
選擇「自定義大小」的方法來處理虛擬內存,並將最大值和最小值都設為同一數值。有很多人都相信用這種方法來處理虛擬內存有助於提高系統的性能。他們所持的理由是,當最大值和最小值都相等時,系統無需時刻進行收縮和擴展頁面文件的動作。省去了這些工作,相應地就是提高系統效率。
這種方法,很多人堅信有效,但同樣地,也有人指出其實並沒有效果。但不管怎樣也好,如要將最大值和最小值設為相等,我們必須堅守一個原則,那就是虛擬內存的大小必須足夠,否則系統輕則會出現效率下降(要進行更多復寫動作來騰出空間),嚴重的更會造成系統不穩定。
4、整理頁面文件
文件數據保存在硬碟上久了,文件碎片(fragment)自然會產生。要保持或提高硬碟的工作效率,我們應不時為硬碟進行一次碎片整理。所謂虛擬內存,其實也是硬碟上的資料文件,那麼虛擬內存是否也應該像普通文件般需要整理呢?
Windows系統處理頁面文件(即虛擬內存)的方法有別於一般的文件。相比之下,頁面文件比一般文件更少出現碎片,為頁面文件進行整理通常是沒有必要的。事實上,當Windows XP進行磁碟碎片整理時,頁面文件不會牽涉其中。
雖然Windows不會對頁面文件進行整理,但事實上頁面文件也有碎片存在。追求「盡善盡美」的朋友可能仍想對頁面文件進行碎片整理。大家不妨試試下面的方法:
在桌面「我的電腦」圖標上單擊滑鼠右鍵,在隨後出現的功能菜單中選「屬性」。進入系統屬性的設置窗口,用滑鼠點選「高級」-->「性能」-->「設置」-->「高級」-->「更改」,在隨後出現的「虛擬內存」設置窗口中選中「無分頁文件」一項。最後單擊「設置」按鈕退出,並重新啟動電腦。
重新啟動後,檢查一下磁碟根目錄中還有沒有pagefile.sys頁面文件存在,如有就將之刪除。清除掉虛擬內存的頁面文件後,現在我們再進行磁碟碎片整理。完成後,按照前面的步驟重新設置一定數量的虛擬內存,並啟動電腦使之生效。經上述方法處理後,新得出的頁面文件將會是沒有碎片的。
另外,如果想查看頁面文件碎片的具體情況呢?啟動磁碟碎片整理程序,為存在有頁面文件的硬碟進行一次「分析」,再點選「查看報告」,看看「頁面文件碎片」一欄便會一目瞭然。
四、虛擬內存的理想大小及准確定位
1、虛擬內存的理想大小
想以「自定義大小」的方法來處理虛擬內存,究竟應該設置多大的虛擬內存呢?在Windows XP中,如果由操作系統自己定義虛擬內存,系統通常會把最小值設置為物理內存的1.5倍。當擴展時,最大值則介於物理內存的2.5至3倍。一般情況下,用戶想自定義虛擬內存的大小,均可參照這個比例設置。
真的要參照這個比例嗎?如果我的電腦上有1GB的內存,難不成最小值要設置為1.5GB,最大值是2.5至3GB。這樣一來。Pagefile.sys頁面文件至少為1.5GB,太不現實了!
其實,大內存的系統跟小內存的系統相比,在設置虛擬內存時,標准有些不同。
如果大家有512MB以上甚至1GB的內存,既然物理內存已經相當充足,所需的虛擬內存反而應該減少。故在大內存的系統中,虛擬內存的最小值可以設成物理內存的一半。比如有1GB的內存,虛擬內存的最小值設成512MB,最大值則維持3GB以備不時之需。注意:雖然最大值設為3GB,系統是不會立即出現3GB大小的pagefile.sys文件,實際上它首先會以最小值出現,待有擴展需要時才會遞增。
另外,有些大內存的朋友,可能會乾脆不設置虛擬內存,以此強迫系統使用速度較快的內存。其實這是不太明智的做法。正所謂凡事都不要做得太絕對,完全沒有虛擬內存也不行。原因是不少應用程序在設計時要求必須使用虛擬內存,沒有了就會造成系統不穩定或死機。
至於小內存的系統,例如256MB,參照1.5倍及3倍的設置比例最穩當。即虛擬內存最小值設為384MB,最大值768MB。
2、手工訂制最准確的虛擬內存
0.5倍、1.5倍、3倍,哇!好像買衣服時分大、中、小號,完全沒有個性。究竟設置虛擬內存有沒有更「貼身剪裁」的方法呢?
在Windows XP桌面的「開始」→「運行」中輸入perfmon.msc,一個與系統性能有關的監視器便會出現。看看顯示器的底部,有三個計數器(pages/sec、Avg.Disk Queue Length及rocessor Time,)。為了便於我們接下來對虛擬內存的頁面文件進行精確監測,現在請大家將這三個計數器逐一點選,並按鍵盤上的Delete鍵將它們刪除。請大家放心,刪除後,下次再啟動系統性能監視器時,這三個項目會重新出現。
刪除後,現在請在圖表中央位置單擊滑鼠右鍵,在隨後出現的功能菜單中點選「添加計數器」一項,跟著在跳出窗口的「性能對象」一欄選「Process」。之後再在「從列表選擇」一欄中點選「Page File Bytes」。不清楚「Page File Bytes」代表什麼意思,只要單擊「說明」按鈕,解說文字便會出現在對話框之下。
選定「Page File Bytes」後,再在右方的「從列表選擇範例」一欄選取「Total」項,之後依次單擊「添加」和「關閉」按鈕,一個名為「Page File Bytes」的計數器便會出現在性能監視器的下方中。
重復以上的動作,再添加一個名為「Page File Bytes Peak」的計數器(即Process下面的Page File Bytes Peak)。
現在,回頭看一下監視器,圖表中應該正在顯示並計量著剛才新增加的兩個計數器。如無意外,這兩個計數器在圖表上的顯示不正確,即數值靠近最高比例線,沒有動態變化。不用怕,這並不表示你的電腦出了什麼問題,而是圖表比例設得不太恰當而已!用滑鼠右鍵逐一單擊監視器底部的「Page Fele Bytes」和「Page File By8tes Peak」計數器,並選「屬性」一項。在「數據」頁面的「比例」一欄中改為0.0000001,這樣顯示器中的圖表便不再是沒有動靜了。
如果你看過系統提供的說明,相信應該知道「Page File Bytes」和「Page File Bytes Peak」正是代表了系統監測期間所使用的虛擬內存及其峰值是多大。因此,需要精確地手工設置虛擬內存,可參考圖表下方顯示的數字,其單位是Bytes
想知道在正常的情況下,你的系統會耗用多少虛擬內存?請將平時日常使用的應用軟體同時啟動並讓它們開始工作,接著再看性能監視器上所顯示的數值,心中有數了吧。
人總有瘋狂的時候,想知道自己瘋狂使用電腦時系統需要多少虛擬內存,現在就盡情地將電腦上的程序啟動並運行(例如,開十多個IE瀏覽器窗口上網,播放MP3和DVD影片,再進行光碟刻錄或DV影片壓縮編碼),看看監視器的百分比會升高到多少。
在圖表上右擊滑鼠,點選「屬性」,進入「圖表」頁面勾選「水平格線」一項。這樣圖表中會出現一條條的水平分割線,是不是好分辨了?
圖表中的紅色垂直線跑得太快,來不及開啟電腦上的程序進行測試?
同樣,在圖表上單擊滑鼠右鍵,選「屬性」,在常規頁面的「自動抽樣間隔」一項中將1秒改為5秒。此時,圖表中的「圖形時間」數值便會由1分40秒變成8分20秒。換言之,紅色垂直線走完一圈需花費8分20秒,這個時間應該足以讓大家開啟並運行很多應用程序,然後再慢慢查看圖表中的結果。
最後,通過監視器的圖表,相信大家已經能粗略估計你的電腦系統應設置多大的虛擬內存了。
五、出現「虛擬內存不夠」的幾個可能
1、感染病毒
有些病毒發作時會佔用大量內存空間,導致系統出現內存不足的問題。趕快去殺毒,升級病毒庫,然後把防毒措施做好!
2、虛擬內存設置不當
虛擬內存設置不當也可能導致出現內存不足問題,一般情況下,虛擬內存大小為物理內存大小的2倍即可,如果設置得過小,就會影響系統程序的正常運行。重新調整虛擬內存大小以WinXP為例,右鍵點擊「我的電腦」,選擇「屬性」,然後在「高級」標簽頁,點擊「性能」框中的「設置」按鈕,切換到「高級」標簽頁,然後在「虛擬內存」框中點擊「更改」按鈕,接著重新設置虛擬內存大小,完成後重新啟動系統就好了。
3、系統空間不足
虛擬內存文件默認是在系統盤中,如WinXP的虛擬內存文件名為「pagefile.sys」,如果系統盤剩餘空間過小,導致虛擬內存不足,也會出現內存不足的問題。系統盤至少要保留300MB剩餘空間,當然這個數值要根據用戶的實際需要而定。用戶盡量不要把各種應用軟體安裝在系統盤中,保證有足夠的空間供虛擬內存文件使用,而且最好把虛擬內存文件安放到非系統盤中。
4、因為SYSTEM用戶許可權設置不當
基於NT內核的Windows系統啟動時,SYSTEM用戶會為系統創建虛擬內存文件。有些用戶為了系統的安全,採用NTFS文件系統,但卻取消了SYSTEM用戶在系統盤「寫入」和「修改」的許可權,這樣就無法為系統創建虛擬內存文件,運行大型程序時,也會出現內存不足的問題。問題很好解決,只要重新賦予SYSTEM用戶「寫入」和「修改」的許可權即可,不過這個僅限於使用NTFS文件系統的用戶。
六、虛擬內存的優化
1. 啟用磁碟寫入緩存
在「我的電腦」上單擊滑鼠右鍵選擇「屬性->硬體」,打開設備管理器找到當前正在使用的硬碟,單擊滑鼠右鍵選擇屬性。在硬碟屬性的的「策略」頁中,打開「啟用磁碟上的寫入緩存」。
這個選項將會激活硬碟的寫入緩存,從而提高硬碟的讀寫速度。不過要注意一點,這個功能打開後,如果計算機突然斷電可能會導致無法挽回的數據丟失。因此最好在有UPS的情況下再打開這個功能。當然,如果你平常使用計算機時不要進行什麼重要的數據處理工作,沒有UPS也無所謂,這個功能不會對系統造成太大的損失。
2. 打開Ultra MDA
在設備管理其中選擇IDE ATA/ATAPI控制器中的「基本/次要IDE控制器」,單擊滑鼠右鍵選擇「屬性」,打開「高級設置」頁。這里最重要的設置項目就是「傳輸模式」,一般應當選擇「DMA(若可用)」。
3. 配置恢復選項
Windows XP 運行過程中碰到致命錯誤時會將內存的快照保存為一個文件,以便進行系統調試時使用,對於大多數普通用戶而言,這個文件是沒有什麼用處的,反而會影響虛擬內存的性能。所以應當將其關閉。
在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,在「性能」下面單擊「設置」按鈕,在「性能選項」中選擇「高級」頁。這里有一個「內存使用」選項,如果將其設置為「系統緩存」,Windows XP 將使用約4MB的物理內存作為讀寫硬碟的緩存,這樣就可以大大提高物理內存和虛擬內存之間的數據交換速度。默認情況下,這個選項是關閉的,如果計算機的物理內存比較充足,比如256M或者更多,最好打開這個選項。但是如果物理內存比較緊張,還是應當保留默認的選項。
七、頁面文件的設置
1、頁面文件的大小計算
對於不同的計算機而言,頁面文件的大小是各不相同的。關於頁面文件大小的設置,有兩個流傳甚廣的「公式」,「物理內存X2.5」或者「物理內存X1.5」。這兩種計算方法固然簡便,但是並不適用於所有的計算機。設置頁面文件大小最准確的方法是看看計算機在平常運行中實際使用的頁面文件大小。
通過Windows XP自帶的日誌功能可以監視計算機平常使用的頁面文件的大小,從而進行最准確的設置,具體步驟如下。
一、在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,單擊「性能」下面的「設置」按鈕,然後選擇「高級」頁,單擊「虛擬內存」下方的「更改」按鈕。選擇「自定義大小」,並將「起始大小」和「最大值」都設置為300M,這只是一個臨時性的設置。設置完成後重新啟動計算機使設置生效。
二、進入「控制面板->性能與維護->管理工具」,打開「性能」,展開「性能日誌和警告」,選擇「計數器日誌」。在窗口右側單擊滑鼠右鍵選擇「新建日誌設置」
三、隨便設置一個日誌名稱,比如「監視虛擬內存大小」。
四、在「常規」頁中單擊「添加計數器」按鈕。
在「性能對象」中選擇「Paging File」,然後選中「從列表選擇記數器」下面的「%Usage Peak」,並在右側「從列表中選擇範例」中選擇「_Total」。最後單擊「添加」和「關閉」按鈕。
五、別忘了記住「日誌文件」頁中的日誌文件存放位置和文件名,我們後面需要查看這個日誌來判斷Windows XP平常到底用了多少虛擬內存,在這個例子中,日誌文件被存放在D:\Perflog目錄下。
另外還要設置「日誌文件類型」為「文本文件」,這樣便於閱讀。
這時你可以看到剛才新建的日誌條目前面的圖標變成了綠色,這表明日誌系統已經在監視虛擬內存了。如果圖標還是紅色,你應該單擊滑鼠右鍵選擇「開始」來啟動這個日誌。
過一段時間後打開這個CVS文件,我們可以看到如下內容的條目。
這個日誌文件記錄這一段時間中頁面文件的使用情況,注意這里的單位是%,而不是MB。通過簡單的計算,我們就可以得到頁面文件的最小尺寸,公式是「頁面文件尺寸X百分比」。比如這個例子中,虛擬內存最大的使用比率是31%,300MBX31%=93MB,這個值就是虛擬內存的最小值(注意,300MB是前面的設置的臨時值)。
如果物理內存較大,可以考慮將頁面文件的「起始大小」和「最大值」設置為相等,等於上一步中計算出來的大小。這樣硬碟中不會因為頁面文件過渡膨脹產生磁碟碎片,其副作用是由於「最大值」被設置的較小,萬一偶然出現虛擬內存超支的情況,可能會導致系統崩潰。
2、設置頁面文件
現在回到「虛擬內存」的設置對話框中選擇自定義大小並按照上面的計算結果分別設置「初始大小」和「最大值」。這里我們將「初始大小」設置為91M,而將「最大值」設置成了200M,這樣比較保險
3、對頁面文件進行碎片整理
Windows XP運行時需要大量訪問頁面文件,如果頁面文件出現碎片,系統性能將會受到嚴重影響,而且會縮短硬碟的使用壽命。所以我們很有必要對頁面文件定期進行碎片整理。
不過別忘了,頁面文件是系統關鍵文件,Windows XP運行時無法對其進行訪問。所以對它進行碎片整理並不是一件容易的事情。我們有兩種方案可以選擇,一是安裝Windows雙系統,然後啟動另外一個Windows對Windows XP所在的分區進行碎片整理。二是使用專門的工具軟體,比如System File Defragmenter等。
❷ 內存溢出錯誤怎麼解決
引起內存溢出的原因有很多種,常見的有以下幾種:
1.內存中載入的數據量過於龐大,如一次從資料庫取出過多數據;
2.集合類中有對對象的引用,使用完後未清空,使得JVM不能回收;
3.代碼中存在死循環或循環產生過多重復的對象實體;
4.使用的第三方軟體中的BUG;
5.啟動參數內存值設定的過小
內存溢出的解決方案:
第一步,修改JVM啟動參數,直接增加內存。(-Xms,-Xmx參數一定不要忘記加。)
第二步,檢查錯誤日誌,查看「OutOfMemory」錯誤前是否有其它異常或錯誤。
第三步,對代碼進行走查和分析,找出可能發生內存溢出的位置。
重點排查以下幾點:
1.檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來說,如果裂型虧一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
2.檢查代碼中是否有死循環或遞歸調用。
3.檢查是否有大循環重復產生新對象實體。
4.檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來租御說,如果一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上肆神線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
5.檢查List、MAP等集合對象是否有使用完後,未清除的問題。List、MAP等集合對象會始終存有對對象的引用,使得這些對象不能被GC回收。
第四步,使用內存查看工具動態查看內存使用情況
❸ 對象和內存溢出怎麼處理
1. 對象。
A.創建。首先檢查指令的參數能不能在常量區找到類的符號引用,並檢查這個類是否載入、解析和初始化過,如果沒有就執行類的載入過程。其次是內存分配,類載入之後就知道要分配的內存大小,分配方法有兩種,一種是指針碰撞,就是一塊內存是使用過的,一塊是未使用的,用一個指針分割,新分配的內存指針就向空閑的挪動,compact功能的虛擬機是用指針碰撞;另一種是空閑列表,就是一個列表記錄空閑的內存塊,不斷更新列表,新分配的內存在列表中尋找一個合適大小的內閉碰納存塊,sweep功能的虛擬機是使用空閑列表。第三,在分配內存空間的時候,還要考慮並發性。有兩個方法,一種是同步處理,如採用CAS和失敗重試的方法;另外一種是把內存分配動作按照線程劃分在不同的空間之中,每個線程在堆中預先分配一小塊內存,本地線程分配緩沖TLAB,那個線程需要分配內存在那個TLAB上分配,只有TLAB用完了,才要同步鎖定,重新分配。第四、對對象進行必要設置,比方說對象屬於那個類,如何找到類的元數據信息和對象hashcode以及對象GC分代年齡等。
B.對象的內存布局。分為對象頭、實例數據和對齊填充。對象頭包括兩部分,第一部分是存儲對象自身信息,如hashcode,GC分代年齡,鎖狀態等;第二部分是類型指針,對象指向它的類的元數據的指針,虛擬機通過這個指針確定這是那個類的實例。
C.對象訪問定位。兩種方式,一種是句柄訪問,句柄池吵冊有訪問對象實例數據的指針和訪問對象數據類型的指針。這個訪問最大好處是reference是穩定的句柄池地址,對象改變都是改變句柄池裡面的指針,而reference本身不動。另外一種就是直接指針,它有到對象類型數據的指針和實例數據。這個訪問的好處是速度更快,節省了一次指針定位的開銷。
2. 內存溢出OOM。
A.堆溢出。堆存放的是對象實例,只要不斷創建對象,並且保證GC Root到對象有可大路徑避免被垃圾回收清除掉對象,那麼對象數量達到最大堆容量限制就會OOM。用內存映象分析工具,Eclipse Memory Analyzer分析一下。轎沒
B.虛擬機棧和本地方法棧溢出。分為兩種,一種是如果線程請求的棧深度大於虛擬機所允許的最大深度,拋出StackOverFlowError異常;另一種是如果虛擬機在擴展棧時無法申請到足夠內存空間,拋出OutOfMemoryError異常。可以減小最大堆和棧容量來獲取更多的線程數量。
C.方法區和常量池溢出。會有額外提示 PermGen space。
D.本機直接內存溢出。這個Heap Dump文件看不到內存佔用,但是如果有直接或簡介使用了NIO,那有可能就是本機直接內存溢出了。
❹ 內存溢出的解決方法
內存溢出是指應用系統中存在無法回收的內存或使用的跡桐內存過多,最終使得程序運行要用到的內存大於虛擬機能提供的最大內存。
內存中載入的數據量過於龐大,如一次從資料庫取出過多數如州賣據;集合類中有對對象的引用,使用完後未清空,使得JVM不能回渣逗收;代碼中存在死循環或循環產生過多重復的對象實體;使用的第三方軟體中的BUG;啟動參數內存值設定的過小;
檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來說,如果一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
檢查代碼中是否有死循環或遞歸調用。
❺ 內存溢出怎麼解決
解決方法:修改JVM啟動參數,檢查錯誤日誌。對代碼進分析,查找可能發生內存溢出的位置叢沖。
內存溢出的常見原因:1、可能是內存載入的數據量過大導致,比如一次提取過多的數據。
2、可能是第三方軟體bug導致,可以卸滲簡殲載軟體。
3、可能是啟動參數內存值設定的過小,需要重新設置。
4、可能是代碼存在死循環。
內存條購買注意事項:如果需要安裝新的內存條,需要注意主板和內存條的兼容性,否則內存條的性能不能完全發揮,一些第三方軟體可以給出電腦內存條的型號,可以通過軟體測試電腦的內存是第幾代,如果是DDR4就購買DDR4的內存咐肢條。
資料拓展:內存溢出(outofmemory)通俗理解就是內存不夠,通常在運行大型軟體或游戲時,軟體或游戲所需要的內存遠遠超出了你電腦的內存大小。此時軟體或游戲就運行不了,系統會提示內存溢出,有時候會自動關閉軟體,重啟電腦或者自動釋放一部分內存。
❻ 如何解決棧溢出
解決遞歸調用棧溢出的方法是通過尾遞歸優化,事實上尾遞歸和循環的效果是一樣的,所以,把循環看成是一種特殊的尾遞歸函數也是可以的。
尾遞歸,在函數返回的時候,調用自身本身,並且,return語句不能包含表達式。這樣,編譯器或者解釋器就可以把尾遞歸做優化,使遞歸本身無論調用多少次,都只佔用一個棧幀,不會出現棧溢出的情況。
(6)解決溢出的兩種方法擴展閱讀
針對堆棧溢出可能造成的計算機安全問題,通常有以下這些防範措施:
1、強制按照正確的規則寫代碼。
2、通過操作系統使得緩沖區不可執行,從而阻止攻擊者植入攻擊代碼。但由於攻擊者並不一定要通過植入代碼來實現攻擊,同時linux在信號傳遞和GCC的在線重用都使用了可執行堆棧的屬性,因此該方法依然有一定弱點。
3、利用編譯器的邊界檢查來實現緩沖區的保護。該方法使得緩沖區溢出不可能出現,完全消除了緩沖區溢出的威脅,但代價較大,如性能速度變慢。
4、程序指針完整性檢查,該方法能阻止絕大多數緩沖區溢出攻擊。該方法就是說在程序使用指針之前,檢查指針的內容是否發生了變化。
❼ cad算術溢出問題怎麼解決
大致來說,可以有兩種方式解決這個問題:
第一種,你叢納可以換一個軟體,或者自老返己做一個軟體
第二種,你可以把你的數值降低幾個等級,或者提高幾個等級侍鄭飢,直至適合需要的精度
❽ 內存溢出問題怎麼解決
內存溢出可能是病毒作怪,也有可能是程序錯誤.
內存溢出是指系統內存全部被佔用,沒有可用內存分配給新啟動的任務的情況,通常不會導致系統崩潰。
可以擴展一條內存,或者增大虛擬內存的大小
下面以在Windows XP下轉移虛擬內存所在盤符為例介紹虛擬內存的設置方法:
一、手動設置虛擬內存
在默認狀態下,是讓系統管理虛擬內存的,但是系統默認設置的管理方式通常比較保守,在自動調節時會造成頁面文件不連續,而降低讀寫效率,工作效率就顯得不高,於是經常會出現「內存不足」這樣的提示,下面就讓我們自已動手來設置它吧。
①用右鍵點擊桌面上的「我的電腦」圖標,在出現的右鍵菜單中選擇「屬性」選項打開「系統屬性」窗口。在窗口中點擊「高級」選項卡,出現高級設置的對話框.
②點擊「性能」區域的「設置」按鈕,在出現的「性能選項」窗口中選擇「高級」選項卡,打開其對話框。
③在該對話框中可看到關於虛擬內存的區域,點擊「更改」按鈕進入「虛擬內存」的設置窗口。選擇一個有較大空閑容量的分區,勾選「自定義大小」前的復選框,將具體數值填入「初始大
二、量身定製虛似內存
1.普通設置法
根據一般的設置方法,虛擬內存交換文件最小值、最大值同時都可設為內存容胡鏈量的1.5倍,但如果內存本身容量比較大,比如內存是512MB,那麼它佔用的空間也是很可觀的。所以我們可以這樣設定虛擬內存的基本數值:內存容量在256MB以下,就設置為1.5倍;在512MB以上,設置為內存容量的一半;介於256MB與512MB之間的設為與內存容量相同值。
2.精準設置法
由於每個人實際操作的應用程序不可能一樣,比如有些人要運行3DMAX、Photoshop等這樣的大型程序,而有些人可能只是打打字、玩些小游戲,所以對虛擬內存的要求並不相同,於是我們就要因地制宜地精確設置虛擬內存空間的數值。
①先將虛擬內存自定義的「初始大小」、「最大值」設為兩個相同的數值,比如500MB;
②然後依次打開「控制面板→管理工具→性能」,在出現的「性能」對話框中,展開左側欄目中的「性能日誌和警報」,選中其下的「計數器日誌」,在右側欄目中空白處點擊右鍵,選擇右鍵菜單中的「新建日誌設置」選項;
③在彈出的對話框「名稱」一欄中填入任意名稱,比如「虛擬內存測試」。在出現窗口中點擊「添加計數器」按鈕進入下一個窗口;
④在該窗口中打開「性能對象」的下拉列表,選擇其中的「Paging File」,勾選「從列表中選擇計數器」,並在下方的欄目中選擇「%Usage Peak」;勾選「從列表中選擇範例」,在下方的欄目中選擇「_Total」,再依次點擊「添加→關閉」結束
⑥在右側欄目中可以發現多了一個「虛擬內存測試」項目,如果該項目為紅色則說明還沒有啟動,點擊該項,選擇右鍵菜單中的「啟動」選項即可
接下來運行自己常用的一些應用程序,運行一段時間後,進入日誌文件所在的系統分區下默認目錄「PerfLogs」,找到「虛擬內存測試_000001.csv」並用記事本程序打開它,在該內容中,我們查看每一欄中倒數第二項數值,這個數值是虛擬內存的使用比率,找到這項數值的最大值,比如圖中的「46」,用46%乘以500MB(前面所設定的虛擬內存數值),得出數值為230MB。
用該數值可以將初始大小設為230MB,而最大值可以根據磁碟空間大小自由設定,一般建議將它設置為最小值的2到3倍。這樣我們就可以將虛擬內存打造得更精準,使自己的愛機運行得更加流暢、更具效率。
小」、「最大值」欄中,而後依次點擊「設置→確定」按鈕即可,最後重新啟動計算機使虛擬內存設置生效。
建議:可以劃分出一個小分區專門提供給虛擬內存、IE臨時文件存儲等使叢做嫌用,以後可以對該分區定期進行磁碟整理,從滲手而能更好提高計算機的工作效率。
三、Windows虛擬內存加速密籍
虛擬內存對於任何版本的Windows而言都是十分重要的。如果設置得當,它將極大地提升電腦的性能和運行速度。可是在默認狀態下,Windows始終將虛擬內存設為物理內存的1.5倍。這樣的話,如果用戶安裝2GB的內存,系統就會騰出高達3GB的硬碟空間作為虛擬內存。但以當前的主流應用軟體和游戲對內存的需要來看,根本沒有必要使用這么多的虛擬內存。那麼,有沒有什麼秘技或絕招可使虛擬內存運用得更有效率或更顯性能呢?
1、分割存於多個硬碟
將虛擬內存設在較快的硬碟上,的確可使虛擬內存的運作更有效率。但是若電腦上兩個硬碟速度一樣快,則應將虛擬內存平均分配在兩個不同的硬碟上(並非同一硬碟的不同分區)。因為同步進行讀寫操作會更有效地提高系統整體的虛擬內存性能。
舉個例子,假設你原本在硬碟C上設置了700MB的虛擬內存,現在你可嘗試重新分配,即把硬碟C改為350MB,硬碟D新增350MB的虛擬內存。理論上這樣做會加快虛擬內存整體的讀寫操作.
2、硬碟需有足夠空間
如果你不是很有經驗的電腦用戶,又或者沒有特殊的使用要求,在Windows XP中選擇「系統管理的大小」的方法來自動處理虛擬內存,一般情況下應該會比選擇「自定義大小」的方法來得安全和穩定。不過,有一點大家必須注意,由於虛擬內存的「頁面文件」(pagefile.sys)會隨著電腦使用過程進行收縮和擴展,為使系統管理虛擬內存能夠進行得順利和更具彈性,我們必須保證分頁文件所在的硬碟擁有足夠的可用空間。
3、最小值等於最大值
選擇「自定義大小」的方法來處理虛擬內存,並將最大值和最小值都設為同一數值。有很多人都相信用這種方法來處理虛擬內存有助於提高系統的性能。他們所持的理由是,當最大值和最小值都相等時,系統無需時刻進行收縮和擴展頁面文件的動作。省去了這些工作,相應地就是提高系統效率。
這種方法,很多人堅信有效,但同樣地,也有人指出其實並沒有效果。但不管怎樣也好,如要將最大值和最小值設為相等,我們必須堅守一個原則,那就是虛擬內存的大小必須足夠,否則系統輕則會出現效率下降(要進行更多復寫動作來騰出空間),嚴重的更會造成系統不穩定。
4、整理頁面文件
文件數據保存在硬碟上久了,文件碎片(fragment)自然會產生。要保持或提高硬碟的工作效率,我們應不時為硬碟進行一次碎片整理。所謂虛擬內存,其實也是硬碟上的資料文件,那麼虛擬內存是否也應該像普通文件般需要整理呢?
Windows系統處理頁面文件(即虛擬內存)的方法有別於一般的文件。相比之下,頁面文件比一般文件更少出現碎片,為頁面文件進行整理通常是沒有必要的。事實上,當Windows XP進行磁碟碎片整理時,頁面文件不會牽涉其中。
雖然Windows不會對頁面文件進行整理,但事實上頁面文件也有碎片存在。追求「盡善盡美」的朋友可能仍想對頁面文件進行碎片整理。大家不妨試試下面的方法:
在桌面「我的電腦」圖標上單擊滑鼠右鍵,在隨後出現的功能菜單中選「屬性」。進入系統屬性的設置窗口,用滑鼠點選「高級」-->「性能」-->「設置」-->「高級」-->「更改」,在隨後出現的「虛擬內存」設置窗口中選中「無分頁文件」一項。最後單擊「設置」按鈕退出,並重新啟動電腦。
重新啟動後,檢查一下磁碟根目錄中還有沒有pagefile.sys頁面文件存在,如有就將之刪除。清除掉虛擬內存的頁面文件後,現在我們再進行磁碟碎片整理。完成後,按照前面的步驟重新設置一定數量的虛擬內存,並啟動電腦使之生效。經上述方法處理後,新得出的頁面文件將會是沒有碎片的。
另外,如果想查看頁面文件碎片的具體情況呢?啟動磁碟碎片整理程序,為存在有頁面文件的硬碟進行一次「分析」,再點選「查看報告」,看看「頁面文件碎片」一欄便會一目瞭然。
四、虛擬內存的理想大小及准確定位
1、虛擬內存的理想大小
想以「自定義大小」的方法來處理虛擬內存,究竟應該設置多大的虛擬內存呢?在Windows XP中,如果由操作系統自己定義虛擬內存,系統通常會把最小值設置為物理內存的1.5倍。當擴展時,最大值則介於物理內存的2.5至3倍。一般情況下,用戶想自定義虛擬內存的大小,均可參照這個比例設置。
真的要參照這個比例嗎?如果我的電腦上有1GB的內存,難不成最小值要設置為1.5GB,最大值是2.5至3GB。這樣一來。Pagefile.sys頁面文件至少為1.5GB,太不現實了!
其實,大內存的系統跟小內存的系統相比,在設置虛擬內存時,標准有些不同。
如果大家有512MB以上甚至1GB的內存,既然物理內存已經相當充足,所需的虛擬內存反而應該減少。故在大內存的系統中,虛擬內存的最小值可以設成物理內存的一半。比如有1GB的內存,虛擬內存的最小值設成512MB,最大值則維持3GB以備不時之需。注意:雖然最大值設為3GB,系統是不會立即出現3GB大小的pagefile.sys文件,實際上它首先會以最小值出現,待有擴展需要時才會遞增。
另外,有些大內存的朋友,可能會乾脆不設置虛擬內存,以此強迫系統使用速度較快的內存。其實這是不太明智的做法。正所謂凡事都不要做得太絕對,完全沒有虛擬內存也不行。原因是不少應用程序在設計時要求必須使用虛擬內存,沒有了就會造成系統不穩定或死機。
至於小內存的系統,例如256MB,參照1.5倍及3倍的設置比例最穩當。即虛擬內存最小值設為384MB,最大值768MB。
2、手工訂制最准確的虛擬內存
0.5倍、1.5倍、3倍,哇!好像買衣服時分大、中、小號,完全沒有個性。究竟設置虛擬內存有沒有更「貼身剪裁」的方法呢?
在Windows XP桌面的「開始」→「運行」中輸入perfmon.msc,一個與系統性能有關的監視器便會出現。看看顯示器的底部,有三個計數器(pages/sec、Avg.Disk Queue Length及rocessor Time,)。為了便於我們接下來對虛擬內存的頁面文件進行精確監測,現在請大家將這三個計數器逐一點選,並按鍵盤上的Delete鍵將它們刪除。請大家放心,刪除後,下次再啟動系統性能監視器時,這三個項目會重新出現。
刪除後,現在請在圖表中央位置單擊滑鼠右鍵,在隨後出現的功能菜單中點選「添加計數器」一項,跟著在跳出窗口的「性能對象」一欄選「Process」。之後再在「從列表選擇」一欄中點選「Page File Bytes」。不清楚「Page File Bytes」代表什麼意思,只要單擊「說明」按鈕,解說文字便會出現在對話框之下。
選定「Page File Bytes」後,再在右方的「從列表選擇範例」一欄選取「Total」項,之後依次單擊「添加」和「關閉」按鈕,一個名為「Page File Bytes」的計數器便會出現在性能監視器的下方中。
重復以上的動作,再添加一個名為「Page File Bytes Peak」的計數器(即Process下面的Page File Bytes Peak)。
現在,回頭看一下監視器,圖表中應該正在顯示並計量著剛才新增加的兩個計數器。如無意外,這兩個計數器在圖表上的顯示不正確,即數值靠近最高比例線,沒有動態變化。不用怕,這並不表示你的電腦出了什麼問題,而是圖表比例設得不太恰當而已!用滑鼠右鍵逐一單擊監視器底部的「Page Fele Bytes」和「Page File By8tes Peak」計數器,並選「屬性」一項。在「數據」頁面的「比例」一欄中改為0.0000001,這樣顯示器中的圖表便不再是沒有動靜了。
如果你看過系統提供的說明,相信應該知道「Page File Bytes」和「Page File Bytes Peak」正是代表了系統監測期間所使用的虛擬內存及其峰值是多大。因此,需要精確地手工設置虛擬內存,可參考圖表下方顯示的數字,其單位是Bytes
想知道在正常的情況下,你的系統會耗用多少虛擬內存?請將平時日常使用的應用軟體同時啟動並讓它們開始工作,接著再看性能監視器上所顯示的數值,心中有數了吧。
人總有瘋狂的時候,想知道自己瘋狂使用電腦時系統需要多少虛擬內存,現在就盡情地將電腦上的程序啟動並運行(例如,開十多個IE瀏覽器窗口上網,播放MP3和DVD影片,再進行光碟刻錄或DV影片壓縮編碼),看看監視器的百分比會升高到多少。
在圖表上右擊滑鼠,點選「屬性」,進入「圖表」頁面勾選「水平格線」一項。這樣圖表中會出現一條條的水平分割線,是不是好分辨了?
圖表中的紅色垂直線跑得太快,來不及開啟電腦上的程序進行測試?
同樣,在圖表上單擊滑鼠右鍵,選「屬性」,在常規頁面的「自動抽樣間隔」一項中將1秒改為5秒。此時,圖表中的「圖形時間」數值便會由1分40秒變成8分20秒。換言之,紅色垂直線走完一圈需花費8分20秒,這個時間應該足以讓大家開啟並運行很多應用程序,然後再慢慢查看圖表中的結果。
最後,通過監視器的圖表,相信大家已經能粗略估計你的電腦系統應設置多大的虛擬內存了。
五、出現「虛擬內存不夠」的幾個可能
1、感染病毒
有些病毒發作時會佔用大量內存空間,導致系統出現內存不足的問題。趕快去殺毒,升級病毒庫,然後把防毒措施做好!
2、虛擬內存設置不當
虛擬內存設置不當也可能導致出現內存不足問題,一般情況下,虛擬內存大小為物理內存大小的2倍即可,如果設置得過小,就會影響系統程序的正常運行。重新調整虛擬內存大小以WinXP為例,右鍵點擊「我的電腦」,選擇「屬性」,然後在「高級」標簽頁,點擊「性能」框中的「設置」按鈕,切換到「高級」標簽頁,然後在「虛擬內存」框中點擊「更改」按鈕,接著重新設置虛擬內存大小,完成後重新啟動系統就好了。
3、系統空間不足
虛擬內存文件默認是在系統盤中,如WinXP的虛擬內存文件名為「pagefile.sys」,如果系統盤剩餘空間過小,導致虛擬內存不足,也會出現內存不足的問題。系統盤至少要保留300MB剩餘空間,當然這個數值要根據用戶的實際需要而定。用戶盡量不要把各種應用軟體安裝在系統盤中,保證有足夠的空間供虛擬內存文件使用,而且最好把虛擬內存文件安放到非系統盤中。
4、因為SYSTEM用戶許可權設置不當
基於NT內核的Windows系統啟動時,SYSTEM用戶會為系統創建虛擬內存文件。有些用戶為了系統的安全,採用NTFS文件系統,但卻取消了SYSTEM用戶在系統盤「寫入」和「修改」的許可權,這樣就無法為系統創建虛擬內存文件,運行大型程序時,也會出現內存不足的問題。問題很好解決,只要重新賦予SYSTEM用戶「寫入」和「修改」的許可權即可,不過這個僅限於使用NTFS文件系統的用戶。
六、虛擬內存的優化
1. 啟用磁碟寫入緩存
在「我的電腦」上單擊滑鼠右鍵選擇「屬性->硬體」,打開設備管理器找到當前正在使用的硬碟,單擊滑鼠右鍵選擇屬性。在硬碟屬性的的「策略」頁中,打開「啟用磁碟上的寫入緩存」。
這個選項將會激活硬碟的寫入緩存,從而提高硬碟的讀寫速度。不過要注意一點,這個功能打開後,如果計算機突然斷電可能會導致無法挽回的數據丟失。因此最好在有UPS的情況下再打開這個功能。當然,如果你平常使用計算機時不要進行什麼重要的數據處理工作,沒有UPS也無所謂,這個功能不會對系統造成太大的損失。
2. 打開Ultra MDA
在設備管理其中選擇IDE ATA/ATAPI控制器中的「基本/次要IDE控制器」,單擊滑鼠右鍵選擇「屬性」,打開「高級設置」頁。這里最重要的設置項目就是「傳輸模式」,一般應當選擇「DMA(若可用)」。
3. 配置恢復選項
Windows XP 運行過程中碰到致命錯誤時會將內存的快照保存為一個文件,以便進行系統調試時使用,對於大多數普通用戶而言,這個文件是沒有什麼用處的,反而會影響虛擬內存的性能。所以應當將其關閉。
在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,在「性能」下面單擊「設置」按鈕,在「性能選項」中選擇「高級」頁。這里有一個「內存使用」選項,如果將其設置為「系統緩存」,Windows XP 將使用約4MB的物理內存作為讀寫硬碟的緩存,這樣就可以大大提高物理內存和虛擬內存之間的數據交換速度。默認情況下,這個選項是關閉的,如果計算機的物理內存比較充足,比如256M或者更多,最好打開這個選項。但是如果物理內存比較緊張,還是應當保留默認的選項。
七、頁面文件的設置
1、頁面文件的大小計算
對於不同的計算機而言,頁面文件的大小是各不相同的。關於頁面文件大小的設置,有兩個流傳甚廣的「公式」,「物理內存X2.5」或者「物理內存X1.5」。這兩種計算方法固然簡便,但是並不適用於所有的計算機。設置頁面文件大小最准確的方法是看看計算機在平常運行中實際使用的頁面文件大小。
通過Windows XP自帶的日誌功能可以監視計算機平常使用的頁面文件的大小,從而進行最准確的設置,具體步驟如下。
一、在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,單擊「性能」下面的「設置」按鈕,然後選擇「高級」頁,單擊「虛擬內存」下方的「更改」按鈕。選擇「自定義大小」,並將「起始大小」和「最大值」都設置為300M,這只是一個臨時性的設置。設置完成後重新啟動計算機使設置生效。
二、進入「控制面板->性能與維護->管理工具」,打開「性能」,展開「性能日誌和警告」,選擇「計數器日誌」。在窗口右側單擊滑鼠右鍵選擇「新建日誌設置」
三、隨便設置一個日誌名稱,比如「監視虛擬內存大小」。
四、在「常規」頁中單擊「添加計數器」按鈕。
在「性能對象」中選擇「Paging File」,然後選中「從列表選擇記數器」下面的「%Usage Peak」,並在右側「從列表中選擇範例」中選擇「_Total」。最後單擊「添加」和「關閉」按鈕。
五、別忘了記住「日誌文件」頁中的日誌文件存放位置和文件名,我們後面需要查看這個日誌來判斷Windows XP平常到底用了多少虛擬內存,在這個例子中,日誌文件被存放在D:\Perflog目錄下。
另外還要設置「日誌文件類型」為「文本文件」,這樣便於閱讀。
這時你可以看到剛才新建的日誌條目前面的圖標變成了綠色,這表明日誌系統已經在監視虛擬內存了。如果圖標還是紅色,你應該單擊滑鼠右鍵選擇「開始」來啟動這個日誌。
過一段時間後打開這個CVS文件,我們可以看到如下內容的條目。
這個日誌文件記錄這一段時間中頁面文件的使用情況,注意這里的單位是%,而不是MB。通過簡單的計算,我們就可以得到頁面文件的最小尺寸,公式是「頁面文件尺寸X百分比」。比如這個例子中,虛擬內存最大的使用比率是31%,300MBX31%=93MB,這個值就是虛擬內存的最小值(注意,300MB是前面的設置的臨時值)。
如果物理內存較大,可以考慮將頁面文件的「起始大小」和「最大值」設置為相等,等於上一步中計算出來的大小。這樣硬碟中不會因為頁面文件過渡膨脹產生磁碟碎片,其副作用是由於「最大值」被設置的較小,萬一偶然出現虛擬內存超支的情況,可能會導致系統崩潰。
2、設置頁面文件
現在回到「虛擬內存」的設置對話框中選擇自定義大小並按照上面的計算結果分別設置「初始大小」和「最大值」。這里我們將「初始大小」設置為91M,而將「最大值」設置成了200M,這樣比較保險
3、對頁面文件進行碎片整理
Windows XP運行時需要大量訪問頁面文件,如果頁面文件出現碎片,系統性能將會受到嚴重影響,而且會縮短硬碟的使用壽命。所以我們很有必要對頁面文件定期進行碎片整理。
不過別忘了,頁面文件是系統關鍵文件,Windows XP運行時無法對其進行訪問。所以對它進行碎片整理並不是一件容易的事情。我們有兩種方案可以選擇,一是安裝Windows雙系統,然後啟動另外一個Windows對Windows XP所在的分區進行碎片整理。二是使用專門的工具軟體,比如System File Defragmenter等。
❾ 針對定點小數加法運算,分析 產生溢出的原因,並給出兩種溢出的方法
(1)產生「溢出」的原因:
當最高有效數值位的運算進位與符號位的運算進位不一致時,將產生運算「溢出」。 當最高有效位產生進位而符號位無進位時,產生上溢; 當最高有效位無進位而符號位有進位時,產生下溢。
(2)「溢出」檢測方法:
為了判斷「溢出」是否發生,可採用兩種檢測的方法。
第一種方法:採用雙符號位法, 稱為「變形補碼」或「模4補碼」,可使模2補碼所能表示的數的范圍擴大一倍
第二種溢出檢測方法:採用「單符號位法」。當最高有效位產生進位而符號位無進位時,產生上溢;
❿ 【第1期】文本溢出的幾種解決方案
作為宅女談臘加程序員,我深刻地體會到了公司-家一條線的生活狀態,直至今日我終於下定決心要做出改變,希望能通過我寫的文章能和你們有所交流,共同進步。
文本溢出是頁面展現比較常見的問題,我現在來說下我遇到過的解決方案。至租侍賣於該採用哪種解決方案,是按需求來決定的。
我們先來看下默認的頁面展現方式,這里我使用的是Chrome瀏覽器:
從上圖中我們可以看出,中文和有標點符合和空格的英文是默認換行的,而連續的英文數字是默認不換行的。
最簡單暴力的做法是在容器上添加overflow:hidden;,可以阻止文本(或其他任何東西)溢出容器。這個做法雖然可以解決視覺上的問題,但是也導致了文本變得不可訪問,當然,如果可以接受移到容器上才弊逗能看到完整文本的話,那麼我們可以給容器添加title=「文本」屬性,效果如下圖:
如果上述的做法不美觀的話,我們可以再在容器上添加text-overflow:ellipsis;,效果如下圖:
另外一種做法是給容器添加overflow:auto;,它會觸發一個水平滾動條。有些場景是可以用這種解決方案的。
接下來我們來看看怎麼將我們長文本換行,有哪幾種解決方案。
我們可以先來看看word-break: break-all;,它可以在任何地方(除了句號和括弧外)斷開,有時可能會把單詞直接斷開了,效果如下圖:
再來看看overflow-wrap: break-word;,它可以解決word-break: break-all;的問題,效果如下圖:
以上是我工作中最常用的解決方案,希望對你們有幫助,如果有疑問的話,可以隨時聯系我。