詳解:JVM內存調優參數

分享一波:程序員賺外快-必看的巔峰干貨

-Xms

JVM啟動時申請的初始Heap值,默認為操作系統物理內存的1/64但小于1G。默認當空余堆內存大于70%時,JVM會減小heap的大小到-Xms指定的大小,可通過-XX:MaxHeapFreeRation=來指定這個比列。Server端JVM最好將-Xms和-Xmx設為相同值,避免每次垃圾回收完成后JVM重新分配內存;開發測試機JVM可以保留默認值。
-Xmx

JVM可申請的最大Heap值,默認值為物理內存的1/4但小于1G,默認當空余堆內存小于40%時,JVM會增大Heap到-Xmx指定的大小,可通過-XX:MinHeapFreeRation=來指定這個比列。最佳設值應該視物理內存大小及計算機內其他內存開銷而定。
-Xmn

Java Heap Young區大小。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小(相對于HotSpot 類型的虛擬機來說)。持久代一般固定大小為64m,所以增大年輕代后,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8。

程序新創建的對象都是從年輕代分配內存,年輕代由Eden Space和兩塊相同大小的SurvivorSpace(通常又稱S0和S1或From和To)構成,可通過-Xmn參數來指定年輕代的大小,也可以通過-XX:SurvivorRation來調整Eden Space及SurvivorSpace的大小。

老年代用于存放經過多次新生代GC仍然存活的對象,例如緩存對象,新建的對象也有可能直接進入老年代,主要有兩種情況:1、大對象,可通過啟動參數設置-XX:PretenureSizeThreshold=1024(單位為字節,默認為0)來代表超過多大時就不在新生代分配,而是直接在老年代分配。2、大的數組對象,且數組中無引用外部對象。老年代所占的內存大小為-Xmx對應的值減去-Xmn對應的值。如果在堆中沒有內存完成實例分配,并且堆也無法再擴展時,將會拋出OutOfMemoryError異常。
-Xss

Java每個線程的Stack大小。JDK5.0以后每個線程堆棧大小為1M,以前每個線程堆棧大小為256K。根據應用的線程所需內存大小進行調整。在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右。(例如:-Xss1024K)
-XX:PermSize

持久代(方法區)的初始內存大小。(例如:-XX:PermSize=64m)
-XX:MaxPermSize

持久代(方法區)的最大內存大小。(例如:-XX:MaxPermSize=512m)
-XX:+UseSerialGC

串行(SerialGC)是jvm的默認GC方式,一般適用于小型應用和單處理器,算法比較簡單,GC效率也較高,但可能會給應用帶來停頓。
-XX:+UseParallelGC

并行(ParallelGC)是指多個線程并行執行GC,一般適用于多處理器系統中,可以提高GC的效率,但算法復雜,系統消耗較大。(配合使用:-XX:ParallelGCThreads=8,并行收集器的線程數,此值最好配置與處理器數目相等)
-XX:+UseParNewGC

設置年輕代為并行收集,JKD5.0以上,JVM會根據系統配置自行設置,所以無需設置此值。
-XX:+UseParallelOldGC

設置年老代為并行收集,JKD6.0出現的參數選項。
-XX:+UseConcMarkSweepGC

并發(ConcMarkSweepGC)是指GC運行時,對應用程序運行幾乎沒有影響(也會造成停頓,不過很小而已),GC和app兩者的線程在并發執行,這樣可以最大限度不影響app的運行。
-XX:+UseCMSCompactAtFullCollection

在Full GC的時候,對老年代進行壓縮整理。因為CMS是不會移動內存的,因此非常容易產生內存碎片。因此增加這個參數就可以在FullGC后對內存進行壓縮整理,消除內存碎片。當然這個操作也有一定缺點,就是會增加CPU開銷與GC時間,所以可以通過-XX:CMSFullGCsBeforeCompaction=3 這個參數來控制多少次Full GC以后進行一次碎片整理。
-XX:+CMSInitiatingOccupancyFraction=80

代表老年代使用空間達到80%后,就進行Full GC。CMS收集器在進行垃圾收集時,和應用程序一起工作,所以,不能等到老年代幾乎完全被填滿了再進行收集,這樣會影響并發的應用線程的空間使用,從而再次觸發不必要的Full GC。
-XX:+MaxTenuringThreshold=10

垃圾的最大年齡,代表對象在Survivor區經過10次復制以后才進入老年代。如果設置為0,則年輕代對象不經過Survivor區,直接進入老年代。

*************************************優雅的分割線 **********************************

分享一波:程序員賺外快-必看的巔峰干貨

如果以上內容對你覺得有用,并想獲取更多的賺錢方式和免費的技術教程

請關注微信公眾號:HB荷包
在這里插入圖片描述
一個能讓你學習技術和賺錢方法的公眾號,持續更新

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

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

相關文章

數組指針 sizeof 實現_C++數組指針!

學習C數組的時候,對數組的了解不是很深。也不知道,為什么聲明一個數組,int a[10],為什么a就是數組的地址。你可以這樣理解,將a理解為指向數組頭的一個指針,這樣就好理解了。理解了之后確實好像豁然開朗的樣…

利用人工智能提升團隊包容性

在2018年11月舉行的Gartner應用技術與解決方案峰會上,高級主管分析師John Kostoulas認為,積極培養包容性文化的團隊和團隊領導者將超越他們的目標。Kostoulas引用了CEB-Gartner在2016年進行的一項領導力驗證調查,他指出,性別多元化…

表單驗證開發 - 登錄注冊開發(3)

表單驗證開發 - 登錄注冊開發(3) 一、教程目標 學習如何在表單中添加驗證規則。掌握使用 JSON 配置表單驗證規則的方法。實現前端和后端的表單驗證。 二、教程內容 1. 前端表單驗證 步驟 1:找到表單編輯 在頁面上找到需要編輯的表單,如注冊表單或登錄…

count(1),count(*),count(主鍵) 性能對比及辟謠

分享一波:程序員賺外快-必看的巔峰干貨 前言 前段時間關于統計數量的sql問題和朋友進行了討論,網上關于這三種查詢方式說法不一,主要有以下兩種說法。 count(*) count(主鍵) > count(1) count(主鍵) > count(*) > count(1)今天對這三種方式…

python與會計的論文_甭管前浪后浪,寫完論文的先浪!

原標題:甭管前浪后浪,寫完論文的先浪!自愿返校已是板上釘釘的事兒了而對于大家的期末考現在也基本上已經通知線上考試如果沒有線上考試的話,那就是交論文可是,論文動不動就2000字10%查重毛概、各種選修課等等每一門都是…

git 命令 clone分支的代碼

一個項目通常含有很多分支, master分支一般是經過測試,驗證沒有問題后,代碼才會提交到master分支 develop分支,是測試經常拉下來進行測試的分支 直接復制develop分支的git 命令如下: git clone -b develop gitxxx 轉載…

String s = new String(123) 究竟創建了幾個對象

分享一波:程序員賺外快-必看的巔峰干貨 前言 今天上班劃水的過程中有人詢問到這個問題,網上對于這個問題也有爭議,有說創建了一個對象,有說兩個,有說三個。 首先說三個的肯定是扯淡了,今天來討論一下這條語句到底創…

jquery級試題_JS-jQuery練習題面試題

ES5中不能實現繼承的關鍵字A prototypeB callC applyD extends正確答案: D extends //屬于ES6不屬于常見23種設計模式A 單例B MVCC 觀察者D 策略正確答案: B創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。結構型模式&…

Vue 計算屬性與偵聽器

這一節我們一起學習 vue 中的計算屬性(computed properties)和偵聽器(watch)。 在之前&#xff0c;我們學習過 vue 表達式插值&#xff1a; <div id"example">{{ message.split().reverse().join() }} </div> 如果在模板中放入太多的邏輯會讓模板過重且難…

程序員到底要不要重復造輪子?

分享一波:程序員賺外快-必看的巔峰干貨 關于這個話題&#xff0c;現在這里闡述立場&#xff1a;就公司工作而言&#xff0c;不建議重復造輪子。就個人技術而言&#xff0c;強烈建議造輪子&#xff01; 程序員圈子里流行這么一句話&#xff1a;“不要重復造輪子”。它的原文是…

1582年日歷怎么了_【知乎周邊】知乎2020年日歷開箱+測評

感謝 劉看山 劉看山福利社 知一聲 這邊知乎朋友贈送的禮物&#xff0c;這邊拿到了新的一年2020年知乎的日歷。隨日歷還贈送了一年的鹽選會員體驗卡&#xff0c;這個福利很特別哈。打開盒子&#xff0c;里面是厚厚的但是卻不是很大的一個正方體。側面寫有“有問題的日歷”日歷內…

Redis集群一致性Hash效果的代碼演示

在微服務領域&#xff0c;使用Redis做緩存可并不是一件容易的事情。 像新浪、推特這樣的應用&#xff0c;許許多多的熱點數據全都存放在Redis這一層&#xff0c;打到DB層的請求并不多&#xff0c;可以說非常依賴緩存了。如果緩存掛掉&#xff0c;流量全部穿透到DB層&#xff0c…

多線程-題

1、進程和線程之間有什么不同&#xff1f; 一個進程是一個獨立&#xff08;self contained&#xff09;的運行環境&#xff0c;它可以被看作一個程序或者一個應用。而線程是在進程中執行的一個任務。java運行環境是一個包含了不同的類和程序的單一進程。線程可以被稱為輕量級進…

JDK8那些驚為天人的新特性

分享一波:程序員賺外快-必看的巔峰干貨 介紹 隨著java的發展&#xff0c;越來越多的企業開始使用 java8 版本。Java8 是自 java5之后最重要的版本&#xff0c;這個版本包含語言、編譯器、庫、工具、JVM等方面的十多個新特性。本次課程將著重學習其中的一些重點特性。 Jdk8新…

mount 安卓system只讀_Android如何讓system分區可讀寫(MTK安卓6.0)-阿里云開發者社區...

Android 系統默認情況下&#xff0c;system 分區是只讀 mount 的&#xff0c;因為無法進行往里寫數據的&#xff0c;可以用 adb 命令 adb remount 重新 mount 一下。也可以通過在板子上&#xff0c;輸入以下命令重新mount一下system分區命令使其可讀可寫。# mount -o remount /…

【數據結構和算法05】 紅-黑樹(轉發)

2019獨角獸企業重金招聘Python工程師標準>>> 【數據結構和算法05】 紅-黑樹&#xff08;看完包懂~&#xff09; 置頂 2016年04月13日 15:50:25 eson_15 閱讀數&#xff1a;52681 標簽&#xff1a; java數據結構算法紅黑樹 更多 個人分類&#xff1a; ● 結構算法---…

數據結構與算法——二叉樹、堆、優先隊列

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 七、樹 7.1 樹 7.1.1 樹的定義 樹是我們計算機中非常重要的一種數據結構&#xff0c;同時使用樹這種數據結構&#xff0c;可以描述現實生活…

android組建之間通信_Android組件化(三)組件之間的通信

介紹在組件化開發的時候&#xff0c;組件之間是相互獨立的沒有依賴關系&#xff0c;我們不能在使用顯示調用來跳轉頁面了&#xff0c;因為我們組件化的目的之一就是解決模塊間的強依賴問題&#xff0c;假如現在要從A業務組件跳轉到業務B組件&#xff0c;并且要攜帶參數跳轉&…

繼牛津大學后,加大伯克利分校等多家美國高校終止與華為合作

文&#xff0f;AI財經社 唐煜編&#xff0f;嵇國華據 Nature News 報道&#xff0c;在美國相關部門的壓力之下&#xff0c;加州大學伯克利分校&#xff08;UC Berkeley&#xff09;近日宣布不再與華為簽署新的研究合作&#xff1b;德州大學奧斯丁分校也正在審查自身與華為的關系…

為什么varchar字段長度最好是2的n次方-1

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 計算機是二進制計算的&#xff0c;1 bytes 8 bit ,一個字節最多可以代表的數據長度是2的8次方 11111111 在計算機中也就是-128到127。 而var…