精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spark刷爆磁盤與Java弱引用的關系

存儲 存儲設備 Spark
今天,給大家分享下。Java的引用在大數據框架下的引用案例。

 [[351561]]

 

一 引用基本概念

 

如下面,定義兩個變量num,str,存儲模型大致如下圖:

  1. int num = 6; 
  2. String str = “浪尖聊大數據”; 

 

變量num值直接從6修改為了8;變量str只是修改了其保存的地址,從0x88修改為0x86,對象 “浪尖聊大數據 ”本身還在內存中,并沒有被修改。只是內存中新增了對象 “浪尖是帥哥”。

二 值傳遞&引用傳遞

 

舉例說明引用傳遞和值傳遞:

  1. 第一個栗子:基本類型 
  2. void foo(int value) { 
  3.     value = 88; 
  4. foo(num); // num 沒有被改變 
  5.  
  6. 第二個栗子:沒有提供改變自身方法的引用類型 
  7. void foo(String text) { 
  8.     text = "mac"
  9. foo(str); // str 也沒有被改變 
  10.  
  11. 第三個栗子:提供了改變自身方法的引用類型 
  12. StringBuilder sb = new StringBuilder("vivo"); 
  13. void foo(StringBuilder builder) { 
  14.     builder.append("5"); 
  15. foo(sb); // sb 被改變了,變成了"vivo5"。 
  16.  
  17. 第四個栗子:提供了改變自身方法的引用類型,但是不使用,而是使用賦值運算符。 
  18. StringBuilder sb = new StringBuilder("oppo"); 
  19. void foo(StringBuilder builder) { 
  20.     builder = new StringBuilder("vivo"); 
  21. foo(sb); // sb 沒有被改變,還是 "oppo"。 

三 引用的類型

  1. 單純的申明一個軟引用,指向一個person對象 
  2. 1 SoftReference pSoftReference=new SoftReference(new Person(“張三”,12)); 
  3.  
  4. 聲明一個引用隊列 
  5. ReferenceQueue<Person> queue = new ReferenceQueue<>(); 
  6.  
  7. 聲明一個person對象,李四,obj是其強引用 
  8. Person obj = new Person(“李四”,13); 
  9.  
  10. 使軟引用softRef指向李四對應的對象,并且將該軟引用關聯到引用隊列 
  11. 2 SoftReference softRef = new SoftReference<Object>(obj,queue); 
  12.  
  13. 聲明一個person對象,名叫王酒,并保證其僅含軟引用,且將軟引用關聯到引用隊列queue 
  14. 3 SoftReference softRef = new SoftReference<Object>(new Person(“王酒”,15),queue); 
  15.  
  16. 使用很簡單softRef.get即可獲取對應的value。 

  1. WeakReference<Person> weakReference = new WeakReference<>(new Person(“浪尖”,18)); 
  2.  
  3. 聲明一個引用隊列 
  4. ReferenceQueue<Person> queue = new ReferenceQueue<>(); 
  5.  
  6. 聲明一個person對象,李四,obj是其強引用 
  7. Person obj = new Person(“李四”,13); 
  8.  
  9. 聲明一個弱引用,指向強引用obj所指向的對象,同時該引用綁定到引用隊列queue。 
  10. WeakReference weakRef = new WeakReference<Object>(obj,queue); 
  11.  
  12. 使用弱引用也很簡單,weakRef.get 

  1. 聲明引用隊列 
  2. ReferenceQueue queue = new ReferenceQueue(); 
  3.  
  4. 聲明一個虛引用 
  5. PhantomReference<Person> reference = new PhantomReference<Person>(new Person(“浪尖”,18), queue); 
  6.  
  7. 獲取虛引用的值,直接為null,因為無法通過虛引用獲取引用對象。 
  8. System.out.println(reference.get()); 

 

 

 


 

 

四 Threadlocal如何使用弱引用


 

 

五 spark如何使用弱引用進行數據清理

 

 


 

 

shuffle相關的引用,實際上是在ShuffleDependency內部實現了,shuffle狀態注冊到ContextCleaner過程:

  1. _rdd.sparkContext.cleaner.foreach(_.registerShuffleForCleanup(this)) 

然后,我們翻開registerShuffleForCleanup函數源碼可以看到,注釋的大致意思是注冊ShuffleDependency目的是在垃圾回收的時候清除掉它對應的數據:

  1. /** Register a ShuffleDependency for cleanup when it is garbage collected. */ 
  2.   def registerShuffleForCleanup(shuffleDependency: ShuffleDependency[_, _, _]): Unit = { 
  3.     registerForCleanup(shuffleDependency, CleanShuffle(shuffleDependency.shuffleId)) 
  4.   } 

其中,registerForCleanup函數如下:

  1. /** Register an object for cleanup. */ 
  2.   private def registerForCleanup(objectForCleanup: AnyRef, task: CleanupTask): Unit = { 
  3.     referenceBuffer.add(new CleanupTaskWeakReference(task, objectForCleanup, referenceQueue)) 
  4.   } 

referenceBuffer主要作用保存CleanupTaskWeakReference弱引用,確保在引用隊列沒處理前,弱引用不會被垃圾回收。

  1. /** 
  2.    * A buffer to ensure that `CleanupTaskWeakReference`s are not garbage collected as long as they 
  3.    * have not been handled by the reference queue. 
  4.    */ 
  5.   private val referenceBuffer = 
  6.     Collections.newSetFromMap[CleanupTaskWeakReference](new ConcurrentHashMap) 

ContextCleaner內部有一個線程,循環從引用隊列里取被垃圾回收的RDD等相關弱引用,然后完成對應的數據清除工作。

  1. private val cleaningThread = new Thread() { override def run(): Unit = keepCleaning() } 

其中,keepCleaning函數,如下:

  1. /** Keep cleaning RDD, shuffle, and broadcast state. */ 
  2.   private def keepCleaning(): Unit = Utils.tryOrStopSparkContext(sc) { 
  3.     while (!stopped) { 
  4.       try { 
  5.         val reference = Option(referenceQueue.remove(ContextCleaner.REF_QUEUE_POLL_TIMEOUT)) 
  6.           .map(_.asInstanceOf[CleanupTaskWeakReference]) 
  7.         // Synchronize here to avoid being interrupted on stop() 
  8.         synchronized { 
  9.           reference.foreach { ref => 
  10.             logDebug("Got cleaning task " + ref.task) 
  11.             referenceBuffer.remove(ref) 
  12.             ref.task match { 
  13.               case CleanRDD(rddId) => 
  14.                 doCleanupRDD(rddId, blocking = blockOnCleanupTasks) 
  15.               case CleanShuffle(shuffleId) => 
  16.                 doCleanupShuffle(shuffleId, blocking = blockOnShuffleCleanupTasks) 
  17.               case CleanBroadcast(broadcastId) => 
  18.                 doCleanupBroadcast(broadcastId, blocking = blockOnCleanupTasks) 
  19.               case CleanAccum(accId) => 
  20.                 doCleanupAccum(accId, blocking = blockOnCleanupTasks) 
  21.               case CleanCheckpoint(rddId) => 
  22.                 doCleanCheckpoint(rddId) 
  23.             } 
  24.           } 
  25.         } 
  26.       } catch { 
  27.         case ie: InterruptedException if stopped => // ignore 
  28.         case e: Exception => logError("Error in cleaning thread", e) 
  29.       } 
  30.     } 
  31.   } 

shuffle數據清除的函數是doCleanupShuffle,具體內容如下:

  1. /** Perform shuffle cleanup. */ 
  2.   def doCleanupShuffle(shuffleId: Int, blocking: Boolean): Unit = { 
  3.     try { 
  4.       logDebug("Cleaning shuffle " + shuffleId) 
  5.       mapOutputTrackerMaster.unregisterShuffle(shuffleId) 
  6.       shuffleDriverComponents.removeShuffle(shuffleId, blocking) 
  7.       listeners.asScala.foreach(_.shuffleCleaned(shuffleId)) 
  8.       logDebug("Cleaned shuffle " + shuffleId) 
  9.     } catch { 
  10.       case e: Exception => logError("Error cleaning shuffle " + shuffleId, e) 
  11.     } 
  12.   } 

細節就不細展開了。

 

ContextCleaner的start函數被調用后,實際上啟動了一個調度線程,每隔30min主動調用了一次System.gc(),來觸發垃圾回收。

  1. /** Start the cleaner. */ 
  2.   def start(): Unit = { 
  3.     cleaningThread.setDaemon(true
  4.     cleaningThread.setName("Spark Context Cleaner"
  5.     cleaningThread.start() 
  6.     periodicGCService.scheduleAtFixedRate(() => System.gc(), 
  7.       periodicGCInterval, periodicGCInterval, TimeUnit.SECONDS) 
  8.   } 

具體參數是:

  1. spark.cleaner.periodicGC.interval 

本文轉載自微信公眾號「浪尖聊大數據」,可以通過以下二維碼關注。轉載本文請聯系浪尖聊大數據公眾號。

 

 

責任編輯:武曉燕 來源: 浪尖聊大數據
相關推薦

2013-08-19 17:14:04

.Net強引用弱引用

2020-12-02 09:01:40

Java基礎

2015-11-02 17:20:00

Java弱引用

2009-06-16 11:26:22

弱引用內存泄露

2020-11-12 07:49:18

MySQL

2021-01-07 14:20:55

JavaGC

2024-05-20 08:58:13

Java引用類型垃圾回收器

2021-12-09 15:45:09

Python弱引用代碼

2017-10-13 10:36:33

SparkSpark-Strea關系

2009-06-19 16:19:23

Java對象引用

2021-10-08 21:00:52

數據弱引用對象

2013-06-09 13:24:00

程序員Bug

2022-01-02 06:55:08

Node.js ObjectWrapAddon

2021-11-25 07:42:11

命令Linux系統

2017-12-15 16:03:27

2013-09-16 16:48:50

Android優化軟引用

2021-02-21 00:22:32

技術團隊工具

2020-12-28 11:13:24

比特幣數據匿名幣

2021-10-18 15:50:49

Android強引用軟引用

2018-11-16 16:10:28

JavaOOM編程語言
點贊
收藏

51CTO技術棧公眾號

在线免费观看不卡av| 国产欧美精品一区| 国产mv免费观看入口亚洲| 在线免费看黄视频| 99精品女人在线观看免费视频| 一区二区免费看| 麻豆一区区三区四区产品精品蜜桃| 精品乱码一区内射人妻无码| 中文字幕一区二区三区久久网站| 亚洲精品99久久久久| 91色国产在线| 久操av在线| 国产精品伦理在线| 国产视频一区二区三区四区| 真实新婚偷拍xxxxx| 午夜国产精品视频| 尤物九九久久国产精品的分类 | 天堂成人av| 国产亚洲欧美在线| 国产精品国产精品| 国产又粗又猛又爽又黄的视频一 | 久久97久久97精品免视看| 无码h肉动漫在线观看| 亚洲3区在线| 欧美久久久久免费| 国产一二三四在线视频| 91av久久| 亚洲在线免费播放| 亚洲一区二区高清视频| 三级在线播放| 成人app下载| 99精品国产高清一区二区| 在线观看视频二区| 久久亚洲综合| 欧美亚洲成人免费| 国产奶水涨喷在线播放| 在线精品小视频| 有码中文亚洲精品| 亚洲一二三精品| 精品国产一区二区三区小蝌蚪| 亚洲国产精品久久91精品| 一区二区在线免费观看视频| 亚洲天堂网站| 91精品国产综合久久婷婷香蕉 | 在线免费观看国产精品| 亚洲综合日韩| 91av国产在线| 久热这里只有精品6| 最新日韩av| 韩国精品久久久999| 国产亚洲精品女人久久久久久| 在线中文字幕第一区| 色噜噜亚洲精品中文字幕| 九九九视频在线观看| 国产精品一区高清| 亚洲香蕉av在线一区二区三区| 爱爱免费小视频| 国产精品一区2区3区| 一区二区三区视频在线| 欧美性受xxxx黑人| 99精品视频在线| 久久av在线播放| 久久久久亚洲天堂| 亚洲国产免费看| 91sao在线观看国产| 国产精品100| 日日摸夜夜添夜夜添精品视频| 国产精品 欧美在线| 五月婷婷丁香在线| 狠狠色丁香婷综合久久| 亚洲xxx大片| 五月婷婷伊人网| 久久久精品黄色| 亚洲人成网站在线观看播放| 国产区在线看| 香港成人在线视频| 成人免费观看视频在线观看| 精品国模一区二区三区| 欧美夫妻性生活| 性猛交╳xxx乱大交| 少妇高潮一区二区三区| 国产一区二区三区免费视频| 欧美一区免费观看| 在线视频观看日韩| 日本一区二区三区在线播放 | 激情综合亚洲精品| 国产一区二区无遮挡| 韩国三级在线观看久| 亚洲三级理论片| 免费av观看网址| 欧美日韩视频免费看| 日韩精品中文字幕一区二区三区| aaaaa一级片| 欧美韩日一区| 韩国三级日本三级少妇99| 无码一区二区三区在线观看| 国产麻豆精品在线| 欧美日韩精品一区| 精品不卡在线| 初高中福利视频网站| 国产欧美三级电影| 国产一区二区三区精品久久久| 日本中文在线视频| 先锋影音国产一区| 亚洲中国色老太| 久青草国产在线| 亚洲美女屁股眼交3| 免费日韩中文字幕| 亚洲成人五区| 日韩中文字幕免费| 探花视频在线观看| 丁香六月综合激情| 在线国产精品网| 欧美成人免费电影| 欧美一区二区在线不卡| 久久丫精品忘忧草西安产品| 欧美日本一区二区视频在线观看 | 亚洲青青久久| 亚洲欧美中文另类| 久草精品视频在线观看| 精品写真视频在线观看| 欧美三级网色| 日本免费一区二区六区| 精品日产卡一卡二卡麻豆| av在线免费播放网址| 日韩精品五月天| 久久综合给合久久狠狠色| 婷婷在线播放| 日韩三级视频中文字幕| 手机av在线看| 久久精品国产一区二区三区免费看| 久久一区免费| 欲香欲色天天天综合和网| 亚洲成在人线av| 国产一级片网址| 成人中文字幕在线| 91精品国产毛片武则天| 性欧美video另类hd尤物| 中文欧美日本在线资源| 成人a v视频| 国产网站一区二区| 黄色片在线免费| 国产欧美高清视频在线| 日韩免费视频在线观看| 国产一二三区在线视频| 色综合久久久久久久久| 亚洲a v网站| 日韩中文字幕1| 青青成人在线| 成人免费福利| 中文字幕亚洲欧美在线| 911美女片黄在线观看游戏| 国产精品美女视频| 欧美一级视频在线| 天天操天天干天天插| 国产一区二区三区探花| 91超碰caoporn97人人| 深夜福利视频网站| 懂色av一区二区三区| 亚洲天堂视频一区| 老司机精品导航| 亚洲春色在线| 九九九伊在线综合永久| 色偷偷噜噜噜亚洲男人| 国产精品爽爽久久| 亚洲综合久久久久| 成人免费无码大片a毛片| 男女精品网站| 亚洲一区高清| 一区二区三区国产好| 韩国国内大量揄拍精品视频| 五月婷中文字幕| 日韩欧美中文在线| 少妇高潮在线观看| 国产成人精品影视| 欧美日韩精品在线一区二区| 精品一区亚洲| 成人免费观看网址| 俺来俺也去www色在线观看| 日韩精品极品视频免费观看| 成人黄色三级视频| 亚洲已满18点击进入久久| 黄色免费视频网站| 日韩电影在线看| 日本老太婆做爰视频| 欧美挤奶吃奶水xxxxx| 国产成人免费av| 亚洲图区一区| 亚洲跨种族黑人xxx| 一本一道人人妻人人妻αv| 亚洲一区二区三区影院| 夫妇交换中文字幕| 成人sese在线| 蜜臀一区二区三区精品免费视频| 在线观看视频免费一区二区三区| 奇米影视首页 狠狠色丁香婷婷久久综合 | **爰片久久毛片| 国产精品久久久久久婷婷天堂| 在线观看中文字幕的网站| 亚洲欧美激情四射在线日| 99久久精品国产成人一区二区| 欧美日韩免费在线观看| 手机av在线看| 国产日产欧美一区二区三区 | 中文字幕永久在线视频| 亚洲成av人片| www.5588.com毛片| 久久婷婷国产综合精品青草 | av动漫精品一区二区| 国产精品久久久久久久av大片 | 国产精品美女视频网站| 国产精品25p| 欧美成人激情图片网| 都市激情一区| 日韩成人激情视频| 亚洲欧美高清视频| 在线电影院国产精品| 精品视频一二三区| 欧美日韩性生活视频| 久艹视频在线观看| 亚洲美女偷拍久久| 亚洲一区电影在线观看| 国产网站一区二区| 麻豆国产精品一区| av电影在线观看不卡| 国产男女无遮挡猛进猛出| 久久精品国产网站| 天天操天天摸天天爽| 久久精品一区| 97国产精东麻豆人妻电影| 亚洲网站啪啪| 97免费视频观看| 欧美成人69| 亚洲区成人777777精品| 午夜免费一区| 香蕉视频在线网址| 欧美国产小视频| 综合网五月天| 亚洲区综合中文字幕日日| 亚洲永久一区二区三区在线| 夜夜躁很很躁日日躁麻豆| 日韩激情一区二区| 国产淫片av片久久久久久| 亚洲激情中文| 波多野结衣激情| 亚洲澳门在线| 亚洲一区 在线播放| 欧美精品三级| 国产夫妻自拍一区| 亚洲激情女人| 国产最新免费视频| 久久久人人人| 欧美精品成人网| 美国毛片一区二区三区| 91小视频在线播放| 国产一区二区三区久久久 | 国产成人av一区二区三区在线观看| 亚洲网中文字幕| 国产高清不卡一区二区| 97中文字幕在线观看| 成人美女视频在线观看| 亚洲中文字幕无码av| 久久亚洲精华国产精华液| 久久精品国产亚洲av麻豆| 国产蜜臀97一区二区三区| 黄色av片三级三级三级免费看| 亚洲丝袜自拍清纯另类| 在线免费日韩av| 天天色图综合网| 一级特黄免费视频| 欧美一区二区在线免费观看| 亚洲AV无码精品国产| 亚洲黄色www| 在线观看麻豆| 色中色综合影院手机版在线观看| 超碰在线99| 国产精品国产自产拍高清av水多| 欧美成人免费全部网站| 99久久一区三区四区免费| 日韩精品免费一区二区夜夜嗨 | 国一区二区在线观看| 无码aⅴ精品一区二区三区浪潮| 三级影片在线观看欧美日韩一区二区| 亚洲国产高清av| 成人三级伦理片| 中文字幕国产综合| 亚洲色图20p| 国产精品一区二区三区四| 欧美精品九九99久久| 日本激情一区二区| 最新的欧美黄色| 97超碰在线免费| 成人字幕网zmw| 亚洲人成网www| 日本老太婆做爰视频| 日韩在线播放一区二区| 苍井空张开腿实干12次| 亚洲国产精品av| 国产情侣在线视频| 欧美人xxxx| 欧美91精品久久久久国产性生爱| 久久精品在线视频| 韩国成人漫画| 国产欧美一区二区视频| 91精品国产视频| 日韩欧美黄色大片| av日韩在线网站| 欧美丰满艳妇bbwbbw| 欧美色区777第一页| 外国精品视频在线观看 | 美女av一区二区三区| 亚洲色图官网| 国产精品一区二区av| 999国产精品视频| 成人黄色片视频| 不卡的av网站| 国产探花在线播放| 欧美蜜桃一区二区三区| 国产在线观看高清视频| 国内免费精品永久在线视频| 国产精品久久久久久久久久久久久久久| 免费影院在线观看一区 | 国产色视频在线播放| 久久亚洲综合色| 中日韩黄色大片| 欧美成人福利视频| 在线中文字幕视频观看| 国产日韩欧美视频在线| 精品国产aⅴ| 999香蕉视频| 99久久国产综合精品女不卡| 黄色一级视频免费| 日韩亚洲欧美在线观看| 久久77777| 91免费综合在线| 久久久久美女| 国产精品嫩草影视| 亚洲理论在线观看| 99这里有精品视频| 久久亚洲成人精品| 国产精品毛片aⅴ一区二区三区| 一区视频二区视频| 久久精品噜噜噜成人av农村| 91免费在线看片| 欧美日产在线观看| 精品孕妇一区二区三区| 91免费的视频在线播放| 91精品一区二区三区综合| 亚洲欧美手机在线| 亚洲免费成人av| 亚洲乱码精品久久久久..| 欧美激情视频一区二区| 久久精品色播| 国产精品97在线| 久久久精品黄色| 亚洲天堂2021av| 久久综合亚洲社区| 99re8这里有精品热视频8在线| 欧日韩免费视频| 91视频91自| 中文在线免费看视频| 日韩中文字幕免费| 综合中文字幕| 毛片一区二区三区四区| 中文字幕欧美日本乱码一线二线| 亚洲天堂网视频| 欧美高跟鞋交xxxxhd| 欧美中文一区| 麻豆av免费在线| 成人欧美一区二区三区白人 | av男人天堂一区| 天天爽夜夜爽人人爽| 这里只有精品视频| 另类视频一区二区三区| 国产九九九九九| 欧美国产欧美综合| 国产黄色一区二区| 91av视频在线观看| 欧美www视频在线观看| 欧美极品jizzhd欧美仙踪林| 欧美性猛交xxxx乱大交极品| 五月香视频在线观看| 国产成人av一区二区三区| 久久久噜噜噜| 久久黄色免费视频| 亚洲欧美另类在线观看| 精品视频一二| 日韩网址在线观看| 日韩理论片网站| 亚洲aaa在线观看| 成人黄色免费看| 国产精品视区| 99热这里只有精品4| 亚洲二区中文字幕| 精品亚洲a∨| 黄色大片在线免费看| 综合激情成人伊人| 极品美乳网红视频免费在线观看| 91久久国产综合久久蜜月精品| 久久久国产精品一区二区中文|