“could not create the java virtual machine”啟動eclipse報錯

來源:互聯網
上載者:User

      今天準備使用eclipse寫python指令碼,剛啟動eclipse,“啪”彈出一個messagebox,報錯“could not create the java virtual machine ”,暈了,前段時間還用它寫過程式,怎麼突然出這種錯誤,開啟工作管理員一看,因為開了幾個VS2005,記憶體已經被消耗得差不多了,本來2048M的記憶體,現在只剩下700多M了,難道是記憶體不夠,java虛擬機器建立失敗?

      開啟到eclipse安裝資料夾下的eclipse.ini檔案,內容如下:

 

-vmargs
-Xms512M
-Xmx1024M
-XX:PermSize=64M
-XX:MaxPermSize=128M

      暫時不知道什麼意思,但是知道是控制eclipse記憶體消耗的,修改如下:

 

-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M

 

      再次啟動eclipse,可以了,驚歎,這些參數分別是什麼意思呢?google一下:

      -vmargs是表示下面是設定JVM(java虛擬機器)的參數,也就是說下面都是java虛擬機器的參數,對於JVM來說,記憶體分為堆記憶體和非堆記憶體,注意這裡的堆不是c/c++裡面的堆的概念,因為jvm自己管理記憶體,所謂堆上的記憶體就是jvm可以分配給java應用程式使用的記憶體,由-Xms和-Xmx這兩個參數限定,而非堆記憶體則是JVM自己使用的,由-XX:PermSize和-XX:MaxPermSize這兩個參數來限定。對於堆記憶體來講,JVM根據剩餘的堆記憶體的多少調整整個堆記憶體的大小,調整範圍就是-Xms(最小)和-Xmx(最大)指定的範圍,-XX:PermSize和-XX:MaxPermSize也是同樣的道理,如果你不想JVM來動態調整的話,可以把最大和最小值設定相等,預設最小值是實體記憶體的1/64,最大值是實體記憶體的1/4,所以這個最大值就受到實體記憶體的限制(當然還會收到作業系統的限制)。

      經過實驗發現,如果-Xms的值比-Xmx設定的大則啟動會失敗;而如果-Xmx和-XX:MaxPermSize設定的值的和比可用的實體記憶體還大,啟動也會失敗,我的第一個設定,兩者的和超過了1G,而當時可用記憶體才700M,所以啟動會失敗,JVM在啟動時會檢測參數和實際可用記憶體。

      【End】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.