中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

孝感有做網站的公司嗎代寫軟文

孝感有做網站的公司嗎,代寫軟文,wordpress采集微信文章,自豪地采用wordpressJVM相關問題 一、Java繼承時父子類的初始化順序是怎樣的?二、JVM類加載的雙親委派模型?三、JDK為什么要設計雙親委派模型,有什么好處?四、可以打破JVM雙親委派模型嗎?如何打破JVM雙親委派模型?五、什么是內…

JVM相關問題

  • 一、Java繼承時父子類的初始化順序是怎樣的?
  • 二、JVM類加載的雙親委派模型?
  • 三、JDK為什么要設計雙親委派模型,有什么好處?
  • 四、可以打破JVM雙親委派模型嗎?如何打破JVM雙親委派模型?
  • 五、什么是內存溢出?什么是內存泄漏?
    • 內存溢出(OOM):OutOfMemory
    • 內存泄露:Memory Leak
  • 六、線上項目JVM都怎么設置的?
  • 七、線上Java項目服務器內存飆升怎么排查處理?
  • 八、線上Java項目服務器CPU飆到100%怎么排查?
  • 九、JVM發(fā)生OOM后,其他線程是否可以繼續(xù)工作?
  • 十、高并發(fā)系統(tǒng)的JVM如何優(yōu)化?
    • 1、內存預估
    • 2、內存分配
    • 3、內存占用動態(tài)推算
    • 4、如何調優(yōu)?

一、Java繼承時父子類的初始化順序是怎樣的?

  1. 父類–靜態(tài)變量
  2. 父類–靜態(tài)初始化塊
  3. 子類–靜態(tài)變量
  4. 子類–靜態(tài)初始化塊
  5. 父類–變量
  6. 父類–初始化塊
  7. 父類–構造器
  8. 子類–變量
  9. 子類–初始化塊
  10. 子類–構造器

二、JVM類加載的雙親委派模型?

在這里插入圖片描述

三、JDK為什么要設計雙親委派模型,有什么好處?

1、確保安全,避免Java核心類庫被修改;

2、避免重復加載;

3、保證類的唯一性;

如果你寫一個java.lang.String的類去運行,發(fā)現(xiàn)會拋出如下異常;
在這里插入圖片描述

四、可以打破JVM雙親委派模型嗎?如何打破JVM雙親委派模型?

答案:可以

想要打破這種模型,那么就自定義一個類加載器,重寫其中的loadClass方法,使其不進行雙親委派即可;

五、什么是內存溢出?什么是內存泄漏?

內存溢出(OOM):OutOfMemory

指程序在申請內存時,沒有足夠的內存空間供其使用,拋出OutOfMemory錯誤;

比如申請了一個8MB空間,但是當前內存可用空間只有5MB,那么就是內存溢出;
在這里插入圖片描述
即:OutOfMemoryError,是指沒有空閑內存,垃圾收集器回收后也不能提供更多的內存空間;

內存泄露:Memory Leak

指程序運行后,沒有釋放所占用的內存空間,一次內存泄漏可能不會有很大的影響,但長時間的內存泄漏,堆積到一定程度就會產生內存溢出;
在這里插入圖片描述
(1)單例對象,生命周期和應用程序一樣長,如果單例對象持有對外部對象的引用的話,那么這個外部對象是不能被回收的,則會產生內存泄露;

(2)一些資源未關閉也會導致內存泄漏,比如數據庫連接,網絡連接socket和IO流的連接都必須在 finally 中 close,否則不能被回收的;

六、線上項目JVM都怎么設置的?

假設線上:4核8G機器;

JVM:棧、堆、元空間;

1、: 1m(默認大小),-Xss512k,一個線程是1m,一個線上項目 Tomcat 可能有300個線程,300m;

2、:大概把機器的一半內存給堆,4G(新生代、老年代);

  • CMS:1/3 、2/3
  • G1: 6:4

3、元空間: 一般512M肯定夠了;

此時JVM參數如下:-Xms4096M -Xmx4096M -Xss1M -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -XX:+UseG1GC

七、線上Java項目服務器內存飆升怎么排查處理?

在Linux系統(tǒng)中使用命令:

#(查看系統(tǒng)Java相關的進程)
jps 

在Linux系統(tǒng)中使用命令:

# 查看進程內存占用情況
top

可使用快捷鍵排序:shift + m

在Linux系統(tǒng)中使用命令:

# 查看內存信息
jmap -histo pid
  • jmap 是Java虛擬機(JVM)自帶的一個命令行工具,用于生成Java進程的內存映像文件(heap dump),它通過與Java進程通信獲取內存信息,并將信息輸出到文件中,以便后續(xù)離線分析。
  • -histo 查看堆內存中的對象實例數目、內存占用大小、類名等;

在Linux系統(tǒng)中使用命令:

# 將內存信息轉存文件
jmap -dump:format=b,file=heap.hprof pid

通過使用 MemoryAnalyzer(MAT)工具分析轉存下來的文件。

八、線上Java項目服務器CPU飆到100%怎么排查?

# 查看進程內存占用情況
top# 打印線程棧信息,輸出到fileName.txt文件中
jstack pid > fileName.txt# 查看pid進程中的線程內存占用情況
top -H -p pid# 把十進制線程ID轉換為十六進制
printf '%x' tid

九、JVM發(fā)生OOM后,其他線程是否可以繼續(xù)工作?

要分情況看,不一定;

  • 如果發(fā)生OOM,例如使用局部變量存放對象,方法執(zhí)行后內存會釋放,那么其他線程可以繼續(xù)工作;
  • 如果發(fā)生OOM,例如使用全局變量存放對象,方法執(zhí)行后內存不會釋放,那么其他線程不可以繼續(xù)工作;

使用 VisualVM 工具查看JVM堆內存變化情況

十、高并發(fā)系統(tǒng)的JVM如何優(yōu)化?

如果每秒發(fā)生 583000 請求:

1、內存預估

  • 普通4核8G服務器,一臺機器抗300-400并發(fā)下單請求比較合理;

  • 583000 / 300 = 1943臺機器;

  • 一個訂單預估1KB;

  • 一臺機器,300KB * 20 * 10 = 60MB的內存開銷,一秒后60MB對象就成為垃圾;

2、內存分配

  • 4核8G的機器,JVM給4G,剩下幾個G會留給操作系統(tǒng);
  • 堆3G(新生代1.5G,老年代1.5G)
  • 棧1MB,JVM里大概會有300-500個線程,大概300-500MB;
  • 元空間/永久代512MB;
    • -Xms3072M -Xmx3072M -Xmn1536M -Xss1M
    • -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M
    • -XX:+PrintGCDetails
    • -XX:+PrintGCDateStamps
    • -Xloggc:d:/gc.log
    • -XX:+HeapDumpOnOutOfMemoryError
    • -XX:HeapDumpPath=d:/heap.hprof

3、內存占用動態(tài)推算

  • 一臺機器每秒抗300個訂單,300KB * 20 * 10 = 60MB,每秒占據新生代60MB內存空間,新生代總共有1.5G的內存空間;
  • 1.5G * 1024MB / 60MB = 25秒 新生代Eden占滿,觸發(fā)Minor GC;
  • 一般情況下一次可以回收掉90%的新生代對象,存活對象 = 1.5G * 1024MB * 10% = 150MB;
  • 如果 “-XX:SurvivorRatio” 參數默認值為8,那么:新生代Eden=1.2GB、S0 = 150MB、S1 = 150MB;
    在這里插入圖片描述

4、如何調優(yōu)?

(1):

  • 1次Minor GC后,可能Survivor不足或者觸發(fā)動態(tài)年齡判斷,對象進入老年代,明顯是 Survivor 空間不足;

  • 新生代調整為2G,老年代為1G,此時Eden:1.6G,每個Survivor:200MB;

  • 解決 Survivor 不足或者觸發(fā)動態(tài)年齡判斷,降低新生代對象進入老年代的概率;

  • 此時JVM參數:

    -Xms3072M -Xmx3072M -Xmn2048M -Xss1M -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M
    

(2):

  • 一般系統(tǒng)里的@Service、@Controller之類的注解需要長期存活,這些對象一般也不會很多,可能幾十兆,應該讓它們盡快進入老年代;
  • 此時JVM參數:
    -Xms3072M -Xmx3072M -Xmn2048M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:MaxTenuringThreshold=5
    

(3):

  • 一般情況下,大對象可能需要長期存活和使用,讓它直接進入老年代;(根據項目實際情況來確定)

  • 此時JVM參數如下:

    -Xms3072M -Xmx3072M -Xmn2048M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:MaxTenuringThreshold=5 -XX:PretenureSizeThreshold=1M
    

(4):

  • 指定合適的垃圾回收器;
  • 此時JVM參數 :
    -Xms3072M -Xmx3072M -Xmn2048M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:MaxTenuringThreshold=5 -XX:PretenureSizeThreshold=1M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
    
  • 小堆內存不使用G1垃圾收集器;

(5):

  • 大概每隔幾分鐘Minor GC之后有大概200MB左右對象進入老年代,推算可能差不多1小時后,才會有接近1GB的對象進入老年代,觸發(fā)Full GC,然后高峰期一過,可能需要幾個小時才會一次Full GC;
-Xms3072M -Xmx3072M -Xmn2048M -Xss1M -XX:-UseCompressedClassPointers -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -XX:PretenureSizeThreshold=1M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:d:/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/heap.hprof

(6): 優(yōu)化思路

  • 1、盡可能讓對象在新生代里分配和回收,避免對象頻繁進入老年代導致老年代頻繁垃圾回收;
  • 2、給系統(tǒng)充足的內存空間,避免新生代頻繁的垃圾回收;
  • 3、指定合適的垃圾收集器;
http://www.risenshineclean.com/news/62209.html

相關文章:

  • 上海網站開發(fā)公百度入駐
  • 炒股配資網站開發(fā)持續(xù)優(yōu)化疫情防控舉措
  • 網站建設管理流程企業(yè)網站設計欣賞
  • 織夢怎么做網站cps廣告聯(lián)盟平臺
  • wordpress設置圖片大小seo數據統(tǒng)計分析工具有哪些
  • 網站流量下滑福州seo技巧培訓
  • 個人做網站開發(fā)指標大數據免費查詢平臺
  • 建站如何注重內容建設愛站工具下載
  • 蘭州出臺9條優(yōu)化措施西安seo優(yōu)化系統(tǒng)
  • 怎么知道一個網站是誰做的上海seo優(yōu)化公司kinglink
  • 企業(yè)做宣傳網站多少錢河北關鍵詞排名推廣
  • 小型網站建設價格低網站人多怎么優(yōu)化
  • 上海網站建設價格成人就業(yè)技術培訓機構
  • 臺州網站建設找哪家好點360優(yōu)化大師app
  • sh域名做的好的網站營銷渠道名詞解釋
  • 梅州市建設培訓中心網站模板網站如何建站
  • 大連鼎信網站建設公司地址crm網站
  • 合肥免費做網站seo優(yōu)化專員工作內容
  • 什么網站詳情頁做的好百度競價排名多少錢
  • 創(chuàng)意設計作品賞析蘇州關鍵詞優(yōu)化怎樣
  • 學做旗袍衣服的網站seo優(yōu)化排名價格
  • 自己制作網站需要什么站長百度
  • 影視網站代理如何出售自己的域名
  • 網絡推廣平臺免費一鍵優(yōu)化表格
  • 專用車網站建設哪家專業(yè)網頁設計的流程
  • asp網站欄目如何修改全國疫情今天最新消息
  • 濰坊網站建設哪家便宜制作網頁用什么軟件
  • 互聯(lián)網投訴中心官網入口seo點擊工具
  • 蕪湖做網站的客戶百度官網平臺
  • 數據庫 網站開發(fā)所需流程百度指數明星搜索排名