亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中的JVM虛擬機(jī)內(nèi)存分配詳解

 更新時(shí)間:2023年10月24日 09:24:53   作者:ruan_luqingnian  
這篇文章主要介紹了Java中的JVM虛擬機(jī)內(nèi)存分配詳解,虛擬機(jī)是一種能夠執(zhí)行 Java 字節(jié)碼的虛擬機(jī),它是 Java 語(yǔ)言的核心組成部分,負(fù)責(zé)將 Java 代碼轉(zhuǎn)換為機(jī)器碼并執(zhí)行,JVM 提供了內(nèi)存管理、垃圾回收、線程管理等功能,需要的朋友可以參考下

Java虛擬機(jī)內(nèi)存分配

對(duì)象分配的規(guī)則有哪些

  • 對(duì)象主要分配在新生代的 Eden 區(qū)上
  • 如果啟動(dòng)了本地線程分配緩沖,將按線程優(yōu)先在 TLAB 上分配
  • 少數(shù)情況下也可能會(huì)直接分配在老年代中

GC參數(shù)指定垃圾回收

-Xms20 M、-Xmx20 M、-Xmn1 0 M 這 3 個(gè)參數(shù)限制了 Java 堆大小為 20 MB,不可擴(kuò)展,其中 10 MB 分配給新生代,剩下的 10 MB 分配給老年代。-Xx: SurvivorRatio= 8 決定了新生代中 Eden 區(qū)與兩個(gè) Survivor 區(qū)的空間比例是 8:1

新生代與老年代

新生代 GC (Minor GC):指發(fā)生在新生代的垃圾收集動(dòng)作,因?yàn)?Java 對(duì)象大多都具備朝生夕滅的特性,所以 Minor GC 非常頻繁,一般回收速度老年代 GC (Major GC/ Full GC):指發(fā)生在老年代的 GC,出現(xiàn)了 Major GC,經(jīng)常會(huì)伴隨至少一次的 Minor GC(但非絕對(duì)的,在 Parallel Scavenge 收集器的收集策略里就有直接進(jìn)行 Major GC 的策略選擇過(guò)程)。Major GC 的速度一般會(huì)比 Minor GC 慢 10 倍以上。

在這里插入圖片描述

大對(duì)象的分配和基本分配一樣嗎?

簡(jiǎn)介:堆內(nèi)存JVM參數(shù)講解,大對(duì)象分配原則講解和代碼驗(yàn)證

是什么?

  • 所謂的大對(duì)象是指,需要大量連續(xù)內(nèi)存空間的 Java 對(duì)象,最典型的大對(duì)象就是那種很長(zhǎng)的字符串以及數(shù)組
  • 虛擬機(jī)提供了一個(gè)-XX: PretenureSizeThreshold 參數(shù),令大于這個(gè)設(shè)置值的對(duì)象直接在老年代分配。這樣做的目的是避免在 Eden 區(qū)及兩個(gè) Survivor 區(qū)之間發(fā)生大量的內(nèi)存復(fù)制

實(shí)戰(zhàn)代碼演練大對(duì)象配置

  • -verbose:gc -XX:+PrintGCDetails 開(kāi)啟GC日志打印
  • -Xms20 M 設(shè)置JVM初始內(nèi)存為20M
  • -Xmx20 M 設(shè)置JVM最大內(nèi)存為20M
  • -Xmn10 M 設(shè)置年輕代內(nèi)存大小為10M
-verbose:gc -XX:+PrintGCDetails -XX:+UseSerialGC -Xms20M -Xmx20M -Xmn10M -XX:PretenureSizeThreshold=3145728
package test;

/**
 * @Author: ruan
 * Date: 2021/7/25 10:07
 * @Description: 對(duì)象主要被分配在新生代中
 * 但對(duì)于一些大對(duì)象則被直接分配在老年代中
 */
public class TestMaxObject {

    public static void main(String[] args) {
        /**
         *設(shè)置新時(shí)代最大容量為3m時(shí)
         * 創(chuàng)建10m的大對(duì)象這會(huì)直接被分配在老年代中
         */
        byte[] bytes = new byte[1024 * 1024 * 10];
    }
}

在這里插入圖片描述

逃逸分析和棧上分配

簡(jiǎn)介:堆內(nèi)存分配方式,分配規(guī)則講解

逃逸分析

逃逸分析的基本行為就是分析對(duì)象動(dòng)態(tài)作用域:當(dāng)一個(gè)對(duì)象在方法中被定義后,它可能被外部方法所引用,稱為方法逃逸。甚至還有可能被外部線程訪問(wèn)到,譬如賦值給類變量或可以在其他線程中訪問(wèn)的實(shí)例變量,稱為線程逃逸

棧上分配

棧上分配就是把方法中的變量和對(duì)象分配到棧上,方法執(zhí)行完后自動(dòng)銷毀,而不需要垃圾回收的介入,從而提高系統(tǒng)性能

-XX:+DoEscapeAnalysis //開(kāi)啟逃逸分析(jdk1.8默認(rèn)開(kāi)啟,其它版本未測(cè)試)
-XX:-DoEscapeAnalysis //關(guān)閉逃逸分析

到此這篇關(guān)于Java中的JVM虛擬機(jī)內(nèi)存分配詳解的文章就介紹到這了,更多相關(guān)Java虛擬機(jī)內(nèi)存分配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java 單例的五種實(shí)現(xiàn)方式及其性能分析

    java 單例的五種實(shí)現(xiàn)方式及其性能分析

    這篇文章主要介紹了java 單例的五種實(shí)現(xiàn)方式及其性能分析。的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Java 將Word轉(zhuǎn)為HTML的方法

    Java 將Word轉(zhuǎn)為HTML的方法

    本文介紹如何在JAVA程序中將Word文檔通過(guò)Document.saveToFile()方法轉(zhuǎn)換為HTML文檔,導(dǎo)入jar的兩種方法,文中給大家詳細(xì)介紹,感興趣的朋友一起看看吧
    2021-10-10
  • Java基礎(chǔ)之final關(guān)鍵字作用案例

    Java基礎(chǔ)之final關(guān)鍵字作用案例

    這篇文章主要介紹了Java基礎(chǔ)之final關(guān)鍵字作用案例,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 詳解Junit 測(cè)試之 Spring Test

    詳解Junit 測(cè)試之 Spring Test

    本篇文章主要介紹了Junit 測(cè)試之 Spring Test,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Java實(shí)現(xiàn)表達(dá)式二叉樹(shù)

    Java實(shí)現(xiàn)表達(dá)式二叉樹(shù)

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)表達(dá)式二叉樹(shù),感興趣的小伙伴們可以參考一下
    2016-08-08
  • 詳解java如何正確使用volatile

    詳解java如何正確使用volatile

    這篇文章給大家分享了java如何正確使用volatile的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友可以參考學(xué)習(xí)下。
    2018-07-07
  • Spring?Cloud?Gateway集成Sentinel流控詳情

    Spring?Cloud?Gateway集成Sentinel流控詳情

    這篇文章主要介紹了Spring?Cloud?Gateway集成Sentinel流控詳情,Sentinel支持對(duì)Spring?Cloud?Gateway、Zuul等主流的API?Gateway進(jìn)行限流,需要的朋友可以參考一下
    2022-09-09
  • 淺析 Java多線程

    淺析 Java多線程

    這篇文章主要介紹了Java多線程的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java線程相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-09-09
  • SpringBoot獲取yml和properties配置文件的內(nèi)容

    SpringBoot獲取yml和properties配置文件的內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了SpringBoot獲取yml和properties配置文件的內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • java map中相同的key保存多個(gè)value值方式

    java map中相同的key保存多個(gè)value值方式

    這篇文章主要介紹了java map中相同的key保存多個(gè)value值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論