當前位置 主頁 > 服務器問題 > Linux/apache問題 > 最大化 縮小

    Linux設置虛擬內存的教學與實戰教程

    欄目:Linux/apache問題 時間:2020-01-04 19:44

    什么是虛擬內存?

    先直接摘抄一段 wikipedia 上的介紹。

    虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認為它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在需要時進行數據交換。

    對于 C 語言里面的變量,我們可以使用 & 運算符來獲得其地址, 既然是虛擬地址,就是指這個地址是虛擬的。

    虛擬地址機制不是必須的,在簡單的單片機中,編寫的代碼編譯時都需要指定物理 RAM 空間分布,不會有虛擬地址的概念,地址就是指在 RAM 中的物理地址。

    虛擬內存(之所以稱為虛擬內存,是和系統中的邏輯內存和物理內存相對而言的,邏輯內存是站在進程角度看到的內存,因此是程序員關心的內容。而物理內存是站在處理器角度看到的內存,由操作系統負責管理。虛擬內存可以說是映射到這兩種不同視角內存的一個技術手段。)技術就是一種由操作系統接管的按需動態內存分配的方法,它允許程序不知不覺中使用大于實際物理空間大小的存儲空間(其實是將程序需要的存儲空間以頁的形式分散存儲在物理內存和磁盤上),所以說虛擬內存徹底解放了程序員,從此程序員不用過分關心程序的大小和載入,可以自由編寫程序了,繁瑣的事情都交給操作系統去做吧。 SWAP(意思是“交換”、“實物交易”)分區是Linux的交換分區。它的功能就是在內存不夠的情況下,操作系統先把內存中暫時不用的數據,存到硬盤的交換空間,騰出內存來讓別的程序運行,當請求的數據不在內存中時,系統產生卻頁中斷,內存管理器便將對應的內存頁重新從硬盤調入物理內存。(需要嚴重注意的是它和內存映射文件的區別,linux虛擬內存或者說交換分區是在磁盤中有一個指定的區域即swap。)交換分區實際存在于磁盤中,不過Linux系統可以將它當作內存使用,當物理真實內存不足的時候交換分區就可以和真實內存進行數據交換。簡單地說就是從磁盤里拿出一塊空間當作內存的儲備區。雖說磁盤被拿來當作內存使用,但是速度還是磁盤的速度。

    介紹

    在我們自己的購買的服務器環境中,一般是買的1g的內存,但是當服務器里面的東西裝的比較多的時候就會導致內存不夠用了,本文將模擬一個真實的內存不夠用的情況下,如何通過修改虛擬內存來讓系統正常運行,我們這里的環境是搭建一個ElasticSearch搜索的環境,但是我們的服務器內存只有1g,下面將演示如何在將1g的虛擬內存修改為4G。

    搭建ElasticSearch環境

    現在我們的服務器環境是空的,什么都沒有,我們這里先將ElasticSearch上傳到服務器,然后將jdk和ElasticSearch安裝好。

    安裝jdk

    安裝教程后面更新(該文章主要介紹設置虛擬內存,安裝這些東西主要是模擬一個內存不夠的狀態)

    安裝ElasticSearch

    安裝鏈接后面更新(該文章主要介紹設置虛擬內存,安裝這些東西主要是模擬一個內存不夠的狀態)

    啟動ElasticSearch

    啟動ElasticSearch,會發現啟動的時候報錯了,原因是我們的服務器現在的內存并不能滿足ElasticSearch需要的內存。

    [esyonghu@localhost elasticsearch-6.4.0]$ ./bin/elasticsearch 
    [1] 3228
    [esyonghu@localhost elasticsearch-6.4.0]$ Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x000000008a660000, 1973026816, 0) failed; error='Cannot allocate memory' (errno=12)
    #
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (mmap) failed to map 1973026816 bytes for committing reserved memory.
    # An error report file with more information is saved as:
    # logs/hs_err_pid3228.log
    [esyonghu@localhost elasticsearch-6.4.0]$ 
    
    下一篇:沒有了
在线观看中文字幕理论片