偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為什么要“除夕”,原來(lái)是內(nèi)存爆了!

存儲(chǔ) 存儲(chǔ)軟件
傳說(shuō)古代有一只四角四足的怪獸:名叫夕。因冬天大雪導(dǎo)致夕沒(méi)東西吃,所以夕經(jīng)常到附近的村里找吃的,因其身體龐大、脾氣暴躁、兇猛異常,給村民帶來(lái)了很大的災(zāi)難。

[[381658]]

傳說(shuō)古代有一只四角四足的怪獸:名叫夕。因冬天大雪導(dǎo)致夕沒(méi)東西吃,所以夕經(jīng)常到附近的村里找吃的,因其身體龐大、脾氣暴躁、兇猛異常,給村民帶來(lái)了很大的災(zāi)難。

后來(lái)有一位聰明的孩子,他叫做年,教給大家除掉“夕”的方法:用爆竹,輕則趕走它,重則傷它。每年臘月三十,夕都會(huì)來(lái)村里,村名就守著夜,放著鞭炮趕走夕。除夕由此而來(lái)。

”我們把“夕”想象成一個(gè)不斷吃機(jī)器內(nèi)存的 Java 程序,就稱(chēng)它為 年獸吧。掌管 Java 虛擬機(jī)內(nèi)存的就是“年”,我們稱(chēng)它為年哥吧。

年獸的地盤(pán)

年哥管理的地盤(pán)主要分為五大區(qū):堆、方法區(qū)、虛擬機(jī)棧、本地方法棧、程序計(jì)數(shù)器。如下圖所示。另外大家可以把圖中的線(xiàn)程想象成村民,而堆是作為村民共享使用的區(qū)域。

運(yùn)行時(shí)數(shù)據(jù)區(qū)

 

堆又可以進(jìn)行細(xì)分,分為新生代和老年代,新生代和老年代的比例是 1:2,而新生代又可以進(jìn)行細(xì)分,分為伊甸園(Eden)區(qū)和兩個(gè) Survivor, 其中 Eden 區(qū)大小和Survivor 區(qū)大小是 8:1。

如下圖所示,年獸和村民都是共享堆內(nèi)存這塊地盤(pán)的,管理員年哥是管理堆內(nèi)存的。其中的數(shù)字 1、8、20 分別代表占用內(nèi)存的份數(shù)。

共享堆區(qū)

 

年獸的胃口

年獸的胃口是村民的幾百倍,年獸假扮村民逃過(guò)了管理員年哥的檢查,年哥對(duì)于這種大胃王都是直接分配到老年代去的,因?yàn)榇笪竿跣枰B續(xù)的內(nèi)存給它吃,而新生代的碎片比較多不滿(mǎn)足條件。在 Java 的世界中,最典型的大胃王就是大對(duì)象:如很長(zhǎng)的字符串,或者元素?cái)?shù)量很龐大的數(shù)組。

如下圖所示,村民分配到新生代吃?xún)?nèi)存,年獸被直接分配到老年代。

年獸被直接分配到老年代

 

大量年獸入侵

年獸嘗到甜頭后,就開(kāi)始不斷地呼叫它的親戚朋友,大量年獸被分配到了老年代,直接導(dǎo)致老年代的內(nèi)存空間不足了,如下圖所示:

大量年獸入侵

 

代碼演示

我們用代碼來(lái)演示下年獸入侵:

  • 創(chuàng)建了 3 個(gè)年獸,都占用 10 MB 內(nèi)存。
  1. public class SpringFestivalOOM { 
  2.     public static void main(String[] args) { 
  3.         // 年獸1/2/3,都占用 10 MB 內(nèi)存 
  4.         byte[] nianShou1 = new byte[10 * 1024 * 1024]; 
  5.         byte[] nianShou2 = new byte[10 * 1024 * 1024]; 
  6.         byte[] nianShou3 = new byte[10 * 1024 * 1024]; 
  7.     } 
  • 編譯這段程序。
  1. javac SpringFestivalOOM.java 
  • 執(zhí)行這段程序,同時(shí)設(shè)置堆內(nèi)存最大為 20 MB。
  1. java -Xms20M -Xmx20M SpringFestivalOOM 

因?yàn)?3 個(gè)年獸占用的內(nèi)存 30 MB 大于堆的最大內(nèi)存 20 MB,所以?huà)伋龆褍?nèi)存溢出異常,如下圖所示:

堆內(nèi)存溢出異常

 

這個(gè)時(shí)候年哥和村民才發(fā)現(xiàn),原來(lái)有這么多年獸占了我們的地盤(pán),趕快消滅它們!

打走年獸

村民們和年哥湊到一塊,討論了下該如何解決這個(gè)問(wèn)題,究其原因就是年獸太多了,要減少他們呼朋喚友來(lái)吃?xún)?nèi)存。

放到我們的 Java 世界中,就是減少大對(duì)象的頻繁創(chuàng)建。

我們程序員經(jīng)常出現(xiàn)本地寫(xiě)完代碼后沒(méi)什么問(wèn)題,到線(xiàn)上后就出問(wèn)題,很可能的原因就是線(xiàn)上環(huán)境的數(shù)據(jù)量大,很容易出現(xiàn)大對(duì)象的頻繁創(chuàng)建,比如大型促銷(xiāo)活動(dòng)時(shí),短時(shí)間內(nèi)需要?jiǎng)?chuàng)建大量訂單數(shù)據(jù),而訂單數(shù)據(jù)又比較復(fù)雜,有很多字段,可能會(huì)占用大量的內(nèi)存空間,最終導(dǎo)致頻繁觸發(fā)垃圾回收,而垃圾回收時(shí)又會(huì)出現(xiàn) Stop the world 現(xiàn)象,應(yīng)用程序的性能就降下來(lái)了。

守歲

在除夕晚上,都會(huì)進(jìn)行“守歲”,村民們齊聚一堂吃著年夜飯,一起等待除夕的鐘聲。等到天亮再拜訪(fǎng)親戚鄰居。

而守歲這個(gè)過(guò)程只能待在家里,不能做其他事情,所以可以看成是垃圾回收時(shí),其他線(xiàn)程不能工作,也就是 Stop the world 的由來(lái)。

如下圖所示,除夕之前,村民可以去其他地方活動(dòng),除夕夜就只能待在家里守歲了,到了第二天早上就可以串門(mén)拜年了。

守歲

 

總結(jié)

本篇通過(guò)除夕的故事來(lái)講解 Java 中垃圾回收機(jī)制,因故事較為簡(jiǎn)單,所以并沒(méi)有對(duì)垃圾回收算法進(jìn)行深入講解,本篇只能算作垃圾回收的入門(mén),希望能給大家?guī)?lái)一定啟發(fā)作用,對(duì) JVM 很熟的同學(xué)就當(dāng)學(xué)習(xí)下除夕的來(lái)歷吧~

  • 村民作為小對(duì)象使用堆區(qū)的新生代,年獸作為大對(duì)象直接使用堆區(qū)的老年代。
  • 除夕當(dāng)晚,大量年獸入侵老年代,導(dǎo)致堆區(qū)內(nèi)存不足,觸發(fā)垃圾回收機(jī)制。
  • 守歲就是待在家里守著過(guò)新年,而垃圾回收時(shí),又會(huì)停止其他線(xiàn)程,也就是 Stop the world。
  • 避免代碼中頻繁復(fù)制或創(chuàng)建大對(duì)象是必須做的事情,以免上線(xiàn)后出現(xiàn)問(wèn)題。
  • 除夕也代表著辭舊迎新,這不正是執(zhí)行垃圾回收嗎?

本文轉(zhuǎn)載自微信公眾號(hào)「悟空聊架構(gòu)」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系悟空聊架構(gòu)公眾號(hào)。

 

 

責(zé)任編輯:武曉燕 來(lái)源: 悟空聊架構(gòu)
相關(guān)推薦

2019-08-30 10:27:37

數(shù)據(jù)庫(kù)通信技術(shù)

2025-02-17 09:22:16

MySQLSQL語(yǔ)句

2021-02-02 09:13:11

索引SQL數(shù)據(jù)庫(kù)

2021-11-29 18:34:14

內(nèi)存異步死循環(huán)

2025-04-03 10:39:56

2019-11-28 14:14:16

微信QQ騰訊

2017-06-06 15:13:07

2020-03-23 08:30:12

程序員男友感受

2022-01-09 23:44:14

5G4G手機(jī)

2009-03-10 12:42:45

2022-12-14 07:32:40

InnoDBMySQL引擎

2021-02-07 08:13:18

@DateTimeFo@NumberFormSpring

2017-11-02 21:17:35

數(shù)字化

2018-01-31 14:50:04

LinuxmacOS .bashrc

2025-04-10 08:00:00

服務(wù)限流開(kāi)發(fā)高并發(fā)

2022-07-13 10:37:59

服務(wù)器故障優(yōu)化

2022-05-05 08:55:12

工業(yè)物聯(lián)網(wǎng)IIoT

2024-02-06 09:30:25

Figma矩形矩形物理屬性

2020-02-23 15:55:00

疫情AI人工智能

2023-05-22 15:58:11

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)