国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【深入淺出-JVM】(7):棧上分配

greatwhole / 1745人閱讀

摘要:概念對(duì)那些作用于不會(huì)逃逸出方法的對(duì)象,在分配內(nèi)存時(shí),不在將對(duì)象分配在堆內(nèi)存中,而是將對(duì)象屬性打散后分配在線程私有棧內(nèi)存上,這樣隨著方法調(diào)用結(jié)束,棧上分配打散的對(duì)象也被回收掉,不在增加額外壓力。

概念

對(duì)那些作用于不會(huì)逃逸出方法的對(duì)象,在分配內(nèi)存時(shí),不在將對(duì)象分配在堆內(nèi)存中,而是將對(duì)象屬性打散后分配在線程私有棧內(nèi)存上,這樣隨著方法調(diào)用結(jié)束,棧上分配打散的對(duì)象也被回收掉,不在增加 GC 額外壓力。

Java 對(duì)象分配流程

示例

循環(huán)創(chuàng)建1000000000一個(gè)對(duì)象,阻止棧上分配

棧上分配條件:開啟逃逸分析 & 開啟標(biāo)量替換

JVM 參數(shù):

棄用逃逸分析(不允許判斷對(duì)象是否可以逃逸出函數(shù)體)

-server -Xmx10m -Xms10m -XX:-DoEscapeAnalysis -XX:+PrintGC

使用 server 模式棄用逃逸分析(-server -XX:-DoEscapeAnalysis),設(shè)置堆空間大小10m,初始空間10m,打印 GC 日志

棄用標(biāo)量替換(不允許對(duì)象打散分配到棧上)

-server -Xmx10m -Xms10m -XX:+PrintGC -XX:-EliminateAllocations

以上二選一

代碼:

package com.mousycoder.mycode.happy_jvm;



/**

 * @version 1.0

 * @author: mousycoder

 * @date: 2019-06-11 16:55

 */

public class OnStackTest {



    public static class User{

        public int id = 0;

        public String name = "";

    }



    public static void alloc(){

        User u = new User();

        u.id = 5;

        u.name = "mousycoder";

    }



    public static void main(String[] args) {

        long b = System.currentTimeMillis();

        for (int i = 0; i < 1000000000; i++) {

            alloc();

        }



        long e = System.currentTimeMillis();

        System.out.println(e-b);

    }

}




輸出:

[GC (Allocation Failure) 7651K->5603K(9728K), 0.0003680 secs]

[GC (Allocation Failure) 7651K->5603K(9728K), 0.0003829 secs]

[GC (Allocation Failure) 7651K->5603K(9728K), 0.0003809 secs]

[GC (Allocation Failure) 7651K->5603K(9728K), 0.0003731 secs]

[GC (Allocation Failure) 7651K->5603K(9728K), 0.0003286 secs]

VisualGC:

分析:

本次發(fā)生的是 Minor GC,發(fā)生 GC 的原因是堆空間沒有合適的區(qū)域能夠存放數(shù)據(jù)結(jié)構(gòu)導(dǎo)致的,堆從7651K 回收到 5603K,

感謝您的耐心閱讀,如果您發(fā)現(xiàn)文章中有一些沒表述清楚的,或者是不對(duì)的地方,請(qǐng)給我留言,您的鼓勵(lì)是作者寫作最大的動(dòng)力。

作 者 : @mousycoder

原文出處 : http://mousycoder.com/thinking-in-jvm/7/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75376.html

相關(guān)文章

  • Java中的逃逸分析

    摘要:當(dāng)一個(gè)對(duì)象被定義之后,可能會(huì)被外部對(duì)象引用,稱之為方法逃逸也有可能被其他線程所引用,稱之為線程逃逸。在編譯過程中,經(jīng)過逃逸分析確定一個(gè)對(duì)象不會(huì)被其他線程或者方法訪問,那么會(huì)將對(duì)象的創(chuàng)建替換成為多個(gè)成員變量的創(chuàng)建,稱之為標(biāo)量替換。 1.引言 Java 程序運(yùn)行時(shí),JVM 會(huì)將 .class 字節(jié)碼轉(zhuǎn)換成機(jī)器能夠識(shí)別的指令,指令轉(zhuǎn)換過程會(huì)產(chǎn)生耗時(shí),延緩程序的運(yùn)行速度,為了解決這種問題出現(xiàn)了...

    jayce 評(píng)論0 收藏0
  • Java對(duì)象分配簡(jiǎn)要流程

    摘要:在一般應(yīng)用中,不會(huì)逃逸的局部對(duì)象所占的比例很大,如果能使用棧上分配,那大量的對(duì)象就會(huì)隨著方法的結(jié)束而自動(dòng)銷毀了,垃圾收集系統(tǒng)的壓力將會(huì)小很多。相關(guān)參數(shù)設(shè)置大對(duì)象直接進(jìn)入年老代的閾值,當(dāng)對(duì)象大小超過這個(gè)值時(shí),將直接在年老代分配。 jvm系列 垃圾回收基礎(chǔ) JVM的編譯策略 GC的三大基礎(chǔ)算法 GC的三大高級(jí)算法 GC策略的評(píng)價(jià)指標(biāo) JVM信息查看 GC通用日志解讀 jvm的card t...

    zorro 評(píng)論0 收藏0
  • JVM解剖公園

    摘要:為此,引入轉(zhuǎn)換查找緩沖緩存最近的轉(zhuǎn)換記錄。這個(gè)優(yōu)化技術(shù),可以看到將原本對(duì)對(duì)象的字段訪問,替換為一個(gè)局部變量的訪問。當(dāng)所有線程都在已知的位置停止的時(shí)候,被認(rèn)為是到達(dá)了安全點(diǎn)。檢查安全點(diǎn)請(qǐng)求的代碼 showImg(https://segmentfault.com/img/bVbwfcz?w=1024&h=576); 1、JVM鎖粗化和循環(huán)原文標(biāo)題:JVM Anatomy Quark #1:...

    imingyu 評(píng)論0 收藏0
  • JVM從小白學(xué)成大佬】2.Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)

    摘要:虛擬機(jī)在執(zhí)行程序的過程中會(huì)把它所管理的內(nèi)存劃分為若干個(gè)不同的數(shù)據(jù)區(qū)域。棧幀棧幀是用于支持虛擬機(jī)進(jìn)行方法調(diào)用和方法執(zhí)行的數(shù)據(jù)結(jié)構(gòu),它是虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)中的虛擬機(jī)棧的棧元素。棧幀的概念結(jié)構(gòu)如下運(yùn)行時(shí)數(shù)據(jù)區(qū)腦圖高 這里我們先說句題外話,相信大家在面試中經(jīng)常被問到介紹Java內(nèi)存模型,我在面試別人時(shí)也會(huì)經(jīng)常問這個(gè)問題。但是,往往都會(huì)令我比較尷尬,我還話音未落,面試者就會(huì)背誦一段(Java虛擬...

    shuibo 評(píng)論0 收藏0
  • JVM的編譯策略

    摘要:解釋器與編譯器并存如果選用完全解釋策略,那么編譯器將停止所有的工作,字節(jié)碼將完全依靠解釋器逐行解釋執(zhí)行。如果選用完全編譯策略,那么解釋器仍然會(huì)在編譯器無法進(jìn)行的特殊情況下介入運(yùn)行,這主要是確保程序能夠最終順序執(zhí)行。 jvm系列 垃圾回收基礎(chǔ) JVM的編譯策略 GC的三大基礎(chǔ)算法 GC的三大高級(jí)算法 GC策略的評(píng)價(jià)指標(biāo) JVM信息查看 GC通用日志解讀 jvm的card table數(shù)據(jù)...

    CloudwiseAPM 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<