eclipse init 配置

--設置最大的堆和最小堆大小.兩者一樣表示固定大小.這樣可以防止老年代內存擴展造成額外的gc.當然也會多占一些內存.系統內存不足的慎用

-Xms512m

-Xmx512m

--加大年輕代內存.減少minor gc

-Xmn164m

--這個是永久代大小.默認是64M,增加到96M.固定大小,減少擴展造成的gc

-XX:PermSize=96m

-XX:MaxPermSize=96m

--去除字節碼驗證

-Xverify:none

--屏蔽顯示調用gc.

-XX:+DisableExplicitGC

--關閉類垃圾回收,就可以消除由于多次裝入和卸裝同一個類而造成的開銷

-Xnoclassgc

--指定最適合多任務并行的CMS垃圾收集器

-XX:+UseParNewGC

-XX:+UseConcMarkSweepGC

--修改默認的觸發老年代full gc的內存所占比..改成85%

-XX:CMSInitiatingOccupancyFraction=85

[plain]?view plain?copy
  1. #?我的配置.??
  2. -vm??
  3. -C:\Java\jdk1.6.0_30\bin\javaw.exe??
  4. -startup??
  5. plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar??
  6. --launcher.library??
  7. plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810??
  8. -product??
  9. org.eclipse.epp.package.jee.product??
  10. --launcher.defaultAction??
  11. openFile??
  12. --launcher.XXMaxPermSize??
  13. 128M??
  14. -showsplash??
  15. org.eclipse.platform??
  16. --launcher.XXMaxPermSize??
  17. 128m??
  18. --launcher.defaultAction??
  19. openFile??
  20. -vmargs??
  21. -Dosgi.requiredJavaVersion=1.5??
  22. -Xverify:none??
  23. -XX:+DisableExplicitGC??
  24. -Xms512M??
  25. -Xmx512M??
  26. -Xmn164m??
  27. -XX:PermSize=96m??
  28. -XX:MaxPermSize=96m??
  29. -XX:+UseParallelGC??
  30. -XX:CMSInitiatingOccupancyFraction=85??


?

?

轉自:?http://blog.chinaunix.net/space.php?uid=10178376&do=blog&id=100985

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M?
這里有幾個問題:
1. 各個參數的含義什么?
2. 為什么有的機器我將-Xmx和-XX:MaxPermSize都設置為512M之后Eclipse可以啟動,而有些機器無法啟動?
3. 為何將上面的參數寫入到eclipse.ini文件Eclipse沒有執行對應的設置?

下面我們一一進行回答

1. 各個參數的含義什么?

參數中-vmargs的意思是設置JVM參數,所以后面的其實都是JVM的參數了,我們首先了解一下JVM內存管理的機制,然后再解釋每個參數代表的含義。

堆(Heap)和非堆(Non-heap)內存
按照官方的說法:“Java 虛擬機具有一個堆,堆是運行時數據區域,所有類實例和數組的內存均從此處分配。堆是在 Java 虛擬機啟動時創建的。”“在JVM中堆之外的內存稱為非堆內存(Non-heap memory)”。可以看出JVM主要管理兩種類型的內存:堆和非堆。簡單來說堆就是Java代碼可及的內存,是留給開發人員使用的;非堆就是JVM留給自己用的,所以方法區、JVM內部處理或優化所需的內存(如JIT編譯后的代碼緩存)、每個類結構(如運行時常數池、字段和方法數據)以及方法和構造方法的代碼都在非堆內存中。?
堆內存分配
JVM初始分配的內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4。默認空余堆內存小于40%時,JVM就會增大堆直到-Xmx的最大限制;空余堆內存大于70%時,JVM會減少堆直到 -Xms的最小限制。因此服務器一般設置-Xms、-Xmx相等以避免在每次GC 后調整堆的大小。?
非堆內存分配
JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。?
JVM內存限制(最大值)
首先JVM內存限制于實際的最大物理內存(廢話!呵呵),假設物理內存無限大的話,JVM內存的最大值跟操作系統有很大的關系。簡單的說就32位處理器雖然可控內存空間有4GB,但是具體的操作系統會給一個限制,這個限制一般是2GB-3GB(一般來說Windows系統下為1.5G-2G,Linux系統下為2G-3G),而64bit以上的處理器就不會有限制了。?
2. 為什么有的機器我將-Xmx和-XX:MaxPermSize都設置為512M之后Eclipse可以啟動,而有些機器無法啟動?

通過上面對JVM內存管理的介紹我們已經了解到JVM內存包含兩種:堆內存和非堆內存,另外JVM最大內存首先取決于實際的物理內存和操作系統。所以說設置VM參數導致程序無法啟動主要有以下幾種原因:

1) 參數中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

2) -Xmx的值和-XX:MaxPermSize的總和超過了JVM內存的最大限制,比如當前操作系統最大內存限制,或者實際的物理內存等等。說到實際物理內存這里需要說明一點的是,如果你的內存是1024MB,但實際系統中用到的并不可能是1024MB,因為有一部分被硬件占用了。?

3. 為何將上面的參數寫入到eclipse.ini文件Eclipse沒有執行對應的設置?

那為什么同樣的參數在快捷方式或者命令行中有效而在eclipse.ini文件中是無效的呢?這是因為我們沒有遵守eclipse.ini文件的設置規則:

參數形如“項 值”這種形式,中間有空格的需要換行書寫,如果值中有空格的需要用雙引號包括起來。比如我們使用-vm C:\Java\jre1.6.0\bin\javaw.exe參數設置虛擬機,在eclipse.ini文件中要寫成這樣:

-vm?
C:\Java\jre1.6.0\bin\javaw.exe?
按照上面所說的,最后參數在eclipse.ini中可以寫成這個樣子:

-vmargs?
-Xms128M?
-Xmx512M?
-XX:PermSize=64M?
-XX:MaxPermSize=128M?
實際運行的結果可以通過Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按鈕進行查看。

另外需要說明的是,Eclipse壓縮包中自帶的eclipse.ini文件內容是這樣的:

-showsplash?
org.eclipse.platform?
--launcher.XXMaxPermSize?
256m?
-vmargs?
-Xms40m?
-Xmx256m?
其中–launcher.XXMaxPermSize(注意最前面是兩個連接線)跟-XX:MaxPermSize參數的含義基本是一樣的,我覺得唯一的區別就是前者是eclipse.exe啟動的時候設置的參數,而后者是eclipse所使用的JVM中的參數。其實二者設置一個就可以了,所以這里可以把 –launcher.XXMaxPermSize和下一行使用#注釋掉。?

3. 其他的啟動參數。 如果你有一個雙核的CPU,也許可以嘗試這個參數:

-XX:+UseParallelGC

讓GC可以更快的執行。(只是JDK 5里對GC新增加的參數)

?

?

堆大小設置
JVM 中最大堆大小有三方面限制:相關操作系統的數據模型(32-bt還是64-bit)限制;系統的可用虛擬內存限制;系統的可用物理內存限制。32位系統下,一般限制在1.5G~2G;64為操作系統對內存無限制。我在Windows Server 2003 系統,3.5G物理內存,JDK5.0下測試,最大可設置為1478m。
典型設置:
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k
-Xmx3550m:設置JVM最大可用內存為3550M。
-Xms3550m:設置JVM促使內存為3550m。此值可以設置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內存。
-Xmn2g:設置年輕代大小為2G。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8。
-Xss128k:設置每個線程的堆棧大小。JDK5.0以后每個線程堆棧大小為1M,以前每個線程堆棧大小為256K。更具應用的線程所需內存大小進行調整。在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右。
java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0
-XX:NewRatio=4:設置年輕代(包括Eden和兩個Survivor區)與年老代的比值(除去持久代)。設置為4,則年輕代與年老代所占比值為1:4,年輕代占整個堆棧的1/5
-XX:SurvivorRatio=4:設置年輕代中Eden區與Survivor區的大小比值。設置為4,則兩個Survivor區與一個Eden區的比值為2:4,一個Survivor區占整個年輕代的1/6
-XX:MaxPermSize=16m:設置持久代大小為16m。
-XX:MaxTenuringThreshold=0:設置垃圾最大年齡。如果設置為0的話,則年輕代對象不經過Survivor區,直接進入年老代。對于年老代比較多的應用,可以提高效率。如果將此值設置為一個較大值,則年輕代對象會在Survivor區進行多次復制,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概論。
回收器選擇
JVM 給了三種選擇:串行收集器、并行收集器、并發收集器,但是串行收集器只適用于小數據量的情況,所以這里的選擇主要針對并行收集器和并發收集器。默認情況下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在啟動時加入相應參數。JDK5.0以后,JVM會根據當前系統配置進行判斷。
吞吐量優先的并行收集器
如上文所述,并行收集器主要以到達一定的吞吐量為目標,適用于科學技術和后臺處理等。

?

以下轉自:?http://www.oschina.net/question/12_11854

A:JVM參數配置之heapsize

-Xmx
指定jvm的最大heap大小,如:-Xmx2g(千萬記住可是沒有等號的哦)

-Xms
指定jvm的最小heap大小,如:-Xms2g(千萬記住可是沒有等號的哦),高并發應用,建議和-Xmx一樣,防止因為內存收縮/突然增大帶來的性能影響,總之記住這遇見這兩值配一樣的數就OK。

-Xmn
指定jvm中NewGeneration的大小,如:-Xmn256m。這個參數會很影響性能的哦,所以要配置好,如果你的程序需要比較多的臨時內存,建議設置到512M,如果用的少,盡量降低這個數值,一般來說128/256足以使用了,配置得小gc效率就越快,系統性能也就得到提高,一般情況下跟據系統配到能接受的下限就OK。

-XX:PermSize=
指定jvm中PermGeneration的最小值,如:-XX:PermSize=32m。這個參數需要看你的實際情況。在生產環境中這個參數得需調試著才能拿到最準值,往往在應用中都會造成這一區域的內存溢出。

-XX:MaxPermSize=
指定(永久代)PermGeneration的最大值,如:-XX:MaxPermSize=64m

-Xss
指定線程桟大小,如:-Xss128k,一般來說,webx框架下的應用需要256K。如果你的程序有大規模的遞歸行為,請考慮設置到512K/1M。這個需要全面的測試才能知道。不過,256K已經很大了。這個參數對性能的影響比較大的。分配得少也就意味著你能多弄幾個線程出來,但還是得根據你的應用來拿拈了。

-XX:NewRatio=
指定jvm中OldGenerationheapsize與NewGeneration的比例,在使用CMSGC的情況下此參數失效,如:-XX:NewRatio=2

-XX:SurvivorRatio=
指定NewGeneration中EdenSpace與一個SurvivorSpace的heapsize比例,-XX:SurvivorRatio=8,那么在總共NewGeneration為10m的情況下,EdenSpace為8m

-XX:MinHeapFreeRatio=
指定jvmheap在使用率小于n的情況下,heap進行收縮,Xmx==Xms的情況下無效,如:-XX:MinHeapFreeRatio=30

-XX:MaxHeapFreeRatio=
指定jvmheap在使用率大于n的情況下,heap進行擴張,Xmx==Xms的情況下無效,如:-XX:MaxHeapFreeRatio=70

-XX:LargePageSizeInBytes=
指定Javaheap的分頁頁面大小,如:-XX:LargePageSizeInBytes=128m

B:JVM參數配置garbagecollector

-XX:+UseParallelGC
指定在NewGeneration使用parallelcollector,并行收集,暫停appthreads,同時啟動多個垃圾回收thread,不能和CMSgc一起使用.系統噸吐量優先,但是會有較長長時間的apppause,后臺系統任務可以使用此gc

-XX:ParallelGCThreads=
指定parallelcollection時啟動的thread個數,默認是物理processor的個數,

-XX:+UseParallelOldGC
指定在OldGeneration使用parallelcollector

-XX:+UseParNewGC
指定在NewGeneration使用parallelcollector,是UseParallelGC的gc的升級版本,有更好的性能或者優點,可以和CMSgc一起使用

-XX:+CMSParallelRemarkEnabled
在使用UseParNewGC的情況下,盡量減少mark的時間

-XX:+UseConcMarkSweepGC
指定在OldGeneration使用concurrentcmarksweepgc,gcthread和appthread并行(在init-mark 和remark時pauseappthread).apppause時間較短,適合交互性強的系統,如webserver

-XX:+UseCMSCompactAtFullCollection
在使用concurrentgc的情況下,防止memoryfragmention,對liveobject進行整理,使memory碎片減少

-XX:CMSInitiatingOccupancyFraction=
指示在oldgeneration在使用了n%的比例后,啟動concurrentcollector,默認值是68,如:-XX:CMSInitiatingOccupancyFraction=70?

-XX:+UseCMSInitiatingOccupancyOnly
指示只有在oldgeneration在使用了初始化的比例后concurrentcollector啟動收集

C: 其他JVM參數配置

-XX:MaxTenuringThreshold=
指定一個對象(object)在經歷了n次(新生代區里的GC)younggc后轉移到oldgeneration(老生代區),在linux64的java6下默認值是15,此參數對于throughputcollector無效,如:-XX:MaxTenuringThreshold=31

-XX:+DisableExplicitGC
禁止java程序中調用的fullgc,如System.gc()的調用。一般都會要配此參數以提高系統性能。

-XX:+UseFastAccessorMethods
把get,set方法轉成本地代碼


-XX:+PrintGCDetails
此參數用來打應垃圾收集的詳細情況?

-XX:+PrintGCTimeStamps
打應垃圾收集的時間分部情況?

-XX:+PrintGCApplicationStoppedTime
打應垃圾收集時,GC時導致的系統停頓時間

D:幾組GC對新舊代的回收方式列表:?

指定方式????????????? ??????????????????????????????????? 新生代GC方式????????????? 舊生代GC方式

?

-XX:+UseSerialGC???????????? ??????????????????????????? 串行GC???????????????????? 串行GC

?

-XX:+UseParallelGC?????????? ? ? ? ? ? ? ? ? ? ? ? ? ? 并行回收GC???????????????? 并行GC

?

-XX:+UseConeMarkSweepGC?? ? ? ? ? ? ? ? ? ?? 并行GC???????????????????? 并發GC

?

-XX:+UseParNewGC?????????????????????????????????? 并行GC??????????????????? ??串行GC

?

-XX:+UseParallelOldGC??????? ? ? ? ? ? ? ? ? ? ? ? 并行回收GC???????????????? 并行GC

?

-XX:+ UseConeMarkSweepGC???????????????????

-XX:+UseParNewGC?????????? ? ? ? ? ? ? ? ? ? ? ?? 串行GC???????????????????? 并發GC

?

不支持的組合???????????????? 1、-XX:+UseParNewGC -XX:+UseParallelOldGC

??????????????????????????? ? ? ? ? 2、-XX:+UseParNewGC -XX:+UseSerialGC

?

三種方式的拉圾回收總結:

串行收集:串行收集使用單線程處理所有垃圾回收工作,因為無需多線程交互,實現容易,而且效率比較高。但是,其局限性也比較明顯,即無法使用多處理器的優勢,適合單處理器機器。

?

并行收集:并行收集使用多線程處理垃圾回收工作,因而速度快,效率高。而且理論上CPU數目越多,就會越能體現出并行收集器的優勢。

?

并發收集:相對于串行收集和并行收集而言,前面兩個在進行垃圾回收工作時,需要暫停整個運行環境(即只有GC一個線程在跑,其它的弟兄們都得停下手頭上的活來等著這兄弟執行完),因此,系統在垃圾回收時會有明顯的暫停,而且暫停時間會因為堆越大而越長。

轉載于:https://www.cnblogs.com/ZRRJDD/p/8135127.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539736.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539736.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539736.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle對表空間操作的sql

管理員給用戶增加不限制表空間權限 grant unlimited tablespace to 用戶; 查看表空間使用情況 SELECT a.tablespace_name "表空間名", total "表空間大小", free "表空間剩余大小", (total - free) "表空間使用大小", total / (…

IPKISS Tutorials------線路仿真

IPKISS------線路仿真 推薦閱讀引言正文示例1------PDK中集成好的器件示例2------使用 i3.Circuit 框架示例3------i3.PCell 框架推薦閱讀 Matplotlib ------ 縱坐標科學計數法含義 引言 我們知道,想要在 IPKISS 中進行仿真,首先需要對線路進行定義,但是我們知道,在 IPK…

Oracle Database 11g Express Edition使用限制,與其他版本的區別

Oracle Database 11g Express Edition是 Oracle 數據庫的免費版本,支持標準版的大部分功能,11g Express Edition 提供 Windows 和 Linux 版本。 做為免費的 Oracle 數據庫版本,Express Edition的限制是: 1)最大數據庫大…

c++ 復制構造函數_C++學習刷題8--復制構造函數和賦值運算符重載函數

一、前言本部分為C語言刷題系列中的第8節,主要講解這幾個知識點:復制構造函數和賦值運算符重載函數。歡迎大家提出意見、指出錯誤或提供更好的題目!二、知識點講解知識點1:復制構造函數1、當依據一個已存對象創建一個新對象時&…

ORACLE使用WITH AS和HINT MATERIALIZE優化SQL解決FILTER效率低下

原文:http://blog.csdn.net/liangweiwei130/article/details/37882503 ------------------------------------------------- 在做項目的過程中,一個頁面使用類似如下的SQL查詢數據,為了保密和使用方便,我把項目中有關的表名和字段…

面試題333

2019獨角獸企業重金招聘Python工程師標準>>> 面試題333 博客分類: java 1、spring的緩存,mybatis緩存2、介紹下dubbo。A服務調用B服務,B服務又調用C服務,這種情況怎么辦3、JVM監控工具有哪些,區別又是什么(如能追上各個…

mysql vfp_用 VFP 連接 MYSQL 數據庫

今天試了一下用 Visual FoxPro 連接 MySQL 數據庫。首先在自己機子上架設 MySQL 數據庫,就不多說了,我是直接用 XAMPP 架設的服務器。然后在 VFP 里輸入命令:sqlhandle SQLSTRINGCONNECT("driver{MySQL ODBC 5.1 Driver};server127.0.0…

oracle中with的用法及用處

原文出處:http://blog.csdn.net/chenjinlin1/article/details/6572401 ---------------------------------------------------------------- WITH 用于一個語句中某些中間結果放在臨時表空間的SQL語句 如 WITH channel_summary AS ( SELECT channels.channel_de…

xpath選擇當前結點的子節點

2019獨角獸企業重金招聘Python工程師標準>>> xpath選擇當前結點的子節點 博客分類: 搜索引擎,爬蟲 在通過selenium使用xpath選擇節點的時候,可能會遇到這么一種情況:在指定的當前節點下搜索滿足要求的節點。 node dri…

mysql中主從復制配置文件_MySQL主從復制 配置文件實例

1、主服務器配置文件# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html[mysqld]# Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70%…

SQL中,where 與 having 的性能比較

原文:http://blog.csdn.net/showshore/article/details/7263115 --------------------------------------------------------- 在做項目的過程中,使用sql語句時,很多時候會用到where或having。 看到國外一個論壇上有人提到兩者性能比較的這個…

Spark 獨立部署模式

2019獨角獸企業重金招聘Python工程師標準>>> Spark 獨立部署模式 博客分類: spark 除了在 Mesos 或 YARN 集群上運行之外, Spark 還提供一個簡單的獨立部署的模塊。你通過手動開始master和workers 來啟動一個獨立的集群。你也可以利用我們提供的腳本 .…

mysql數據庫的鏈接地址_常用數據庫連接URL地址大全

1、Oracle8/8i/9i數據庫(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl為數據庫的SID String user="test"; String password="test"; Con…

數據庫中where與having區別~~~

1、where和having的執行級別不同 在查詢過程中聚合語句(sum,min,max,avg,count)要比having子句優先執行.而where子句在查詢過程中執行優先級別優先于聚合語句(sum,min,max,avg,count)。 having就是來彌補where在分組數據判斷時的不足。因為where執行優先級別要快于聚合語句。…

spring boot 1.5.4 定時任務和異步調用(十)

1 Spring Boot定時任務和異步調用 我們在編寫Spring Boot應用中經常會遇到這樣的場景,比如:我需要定時地發送一些短信、郵件之類的操作,也可能會定時地檢查和監控一些標志、參數等。 spring boot定時任務spring-boot-jsp項目源碼&#…

ORA-04063: view DAILY.TMP_TBX_100_0_S4 有錯誤

執行: CREATE TABLE TMP_TBX_100_0_S3 AS SELECT t.* FROM (select t1.*,NULL AS sdate, NULL AS report_id from TMP_TBX_100_0_S4_1 t1 union all select t2.* from TMP_TBX_100_0_S4_2 t2) t 報錯: ORA-00955: name is already used by an exis…

MySQL左連接還有過濾條件_MySQL左連接問題,右表做篩選,左表列依然在?

問 題原料兩張表,一張user表,一張user_log表(這個例子舉的不好)CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETutf8;CREATE TABLE user_log (id int(10) NOT NU…

2017工作總結

靜兒總結自己的職業生涯分為三個階段。第一個階段為期十年,是純技術階段,是人生的積累期。第二個階段是管理階段,是綜合能力整合期。第三個階段是突破階段,打造自己獨特的核心競爭力。 第一階段 剛畢業的同學可能會覺得技術高大上…

批量刪除table或view

一個個刪太費時了。一個簡單可行的方法。 思路: 找出要刪除的表名/視圖名,然后拼接刪除sql,執行。 批量刪除表: 1、找出要刪除的表名select table_name from user_tables where table_name like S1MSGLATENCY_2016032%;2、復制這…

編譯安裝mysql5.5.39_編譯安裝MySQL5.5

防偽碼:沒有相當程度的孤獨是不可能有內心的平和。1、測試環境主機名IP系統MySQL版本MySQL-00192.168.10.23CentOS release 6.9 (Final)5.5.562、部署2.1 卸載之前版本rpm -qa|grep mysqlrpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_642.2 安裝依賴包和cmakeyum…