Java JVM虛擬機器引數

2021-09-01 02:12:32 字數 1100 閱讀 4941

1,jvm 記憶體說明和虛擬機器引數

堆(heap)和非堆(non-heap)記憶體=jvm記憶體

heap --類例項和陣列的記憶體

non-heap --方法區、jvm內部處理或優化所需的記憶體(如jit 編譯後的**快取)、每個類結構(如執行時常數池、欄位和方法資料)以及方法和構造方法的**都在非堆記憶體中。

-vmargs -xms128m -xmx512m -xx:permsize=64m -xx:maxpermsize=128m

-vmargs --虛擬機器引數

-xms 128m -- jvm初始分配的堆記憶體 預設是物理記憶體的1/64

-xmx512m --jvm最大分配的堆記憶體 預設是物理記憶體的1/4

預設空餘堆記憶體小於 40%時,jvm就會增大堆直到-xmx的最大限制;空餘堆記憶體大於70%時,jvm會減少堆直到-xms的最小限制。

因此伺服器一般設定-xms、 -xmx相等以避免在每次gc 後調整堆的大小。

-xx:permsize=64m --jvm初始分配的非堆記憶體 預設是物理記憶體的1/64

-xx:maxpermsize=128m -- jvm最大分配的非堆記憶體 預設是物理記憶體的1/4

jvm最大記憶體首先取決於實際的物理記憶體和作業系統。

簡單的說就32位處理器雖然可控記憶體空間有4gb,但是具體的作業系統會給乙個限制,這個限制一般是2gb-3gb(一般來說windows系統下為1.5g-2g,linux系統下為2g-3g),而64bit以上的處理器就不會有限制了。

2. 為什麼有的機器我將-xmx和-xx:maxpermsize都設定為512m之後eclipse可以啟動,而有些機器無法啟動?

1) 引數中-xms的值大於-xmx,或者-xx:permsize的值大於-xx:maxpermsize;

2) -xmx的值和-xx:maxpermsize的總和超過了jvm記憶體的最大限制,比如當前作業系統最大記憶體限制,或者實際的物理記憶體等等。說到實際物理記憶體這裡需要說明一點的是,如果你的記憶體是1024mb,但實際系統中用到的並不可能是1024mb,因為有一部分被硬體占用了。

-xx:+useparallelgc

讓gc可以更快的執行。(只是jdk 5裡對gc新增加的引數)

Android虛擬機器引數說明

art的比較複雜,這裡分析dalvik虛擬的的引數,和art引數的概念是一致的 xms 虛擬機器堆的起始大小,啟動時申請的堆記憶體大小 prop dalvik.vm.heapstartsize指定 xmx 虛擬機器堆使用的虛擬記憶體最大大小 prop dalvik.vm.heapsize 指定 xx...

virtualbox虛擬機器 虛擬機器的網路

今天要測試ip多宿主 ip multihoming 即host和guest的兩個網絡卡分別接,host ping guest的ipv6不通。解決過程如下 命令輸出 ip addr 1 lo mtu 65536 qdisc noqueue state unknown link loopback 00 ...

debian虛擬機器安裝kvm虛擬機器

一 概念介紹 1 libvirt是linux上的虛擬化庫,是長期穩定的c語言api,支援kvm qemu xen lxc等主流虛擬化方案。virsh是libvirt對應的shell命令。2 kvm,即kernel basedvirtual machine的簡稱,是乙個開源的系統虛擬化模組,自linu...