91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

邢孟棒:2個壓箱底的方法和工具搞定內(nèi)存泄漏

Linux閱碼場 ? 來源:Linux閱碼場 ? 2023-01-17 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

導(dǎo)讀|遭受內(nèi)存泄露往往是令開發(fā)者頭疼的問題,傳統(tǒng)分析工具 gdb、Valgrind在解決內(nèi)存泄露問題上效率較低。本文特別邀請到了騰訊后臺開發(fā)工程師邢孟棒以 TDSQL實(shí)際生產(chǎn)中mysql-proxy內(nèi)存泄露問題作為分析對象,分享其基于動態(tài)追蹤技術(shù)的通用內(nèi)存泄露(增長)分析方法。其中將詳細(xì)介紹內(nèi)存分配器行為分析、缺頁異常事件分析,涵蓋應(yīng)用程序內(nèi)存分配的常見過程。閱讀完本文后,開發(fā)者僅需關(guān)注少數(shù)可能導(dǎo)致內(nèi)存泄露的代碼路徑,就能有效提升定位內(nèi)存泄露(增長)問題的效率。 背景某個 TDSQL 私有化環(huán)境中, 中間件 mysql-proxy 進(jìn)行大量請求轉(zhuǎn)發(fā)時,內(nèi)存占用量持續(xù)增長導(dǎo)致 OOM 現(xiàn)象,最終影響了用戶業(yè)務(wù)的正常使用 。本人分析該問題的過程中發(fā)現(xiàn)一個較為普遍的業(yè)務(wù)痛點(diǎn):傳統(tǒng)分析工具(gdb、Valgrind 等)效率相對較低,在私有化場景中尤其突出。針對這一痛點(diǎn),我將提供相對通用的內(nèi)存泄露(增長)分析方法,協(xié)助各位開發(fā)者更高效地定位發(fā)生泄露的代碼路徑,以期最大化減少人力投入成本并降低對用戶業(yè)務(wù)體驗(yàn)的影響。

基礎(chǔ)概念

在展開講述內(nèi)存泄露(增長)分析方法之前,我們先了解一些相關(guān)的基礎(chǔ)概念。 內(nèi)存泄露包括內(nèi)核內(nèi)存泄露、應(yīng)用程序內(nèi)存泄露兩大類。內(nèi)核內(nèi)存泄露可以通過 kmemleak 進(jìn)行檢測,本文主要關(guān)注應(yīng)用程序的內(nèi)存泄露。應(yīng)用程序的內(nèi)存泄露又可以細(xì)分為:堆內(nèi)存(Heap)泄露、內(nèi)存映射區(qū)(Memory Mappings)泄露。我們平時提及的內(nèi)存泄露,主要是指物理內(nèi)存的泄露(持續(xù)分配、映射實(shí)際的物理內(nèi)存,且一直未釋放),危害較大,需要立即修復(fù)。 另外,虛擬內(nèi)存的泄露(持續(xù)分配虛擬內(nèi)存,但未分配、映射實(shí)際的物理內(nèi)存)容易被忽視,雖然危害相對較小,但也需額外關(guān)注(進(jìn)程的內(nèi)存映射區(qū)總數(shù)量有上限,默認(rèn) 1w)。 通常,應(yīng)用程序內(nèi)存分配涉及的步驟大致如下圖所示:第一,應(yīng)用程序通過內(nèi)存分配器(例如 libc)提供的 malloc 及其變體函數(shù)申請內(nèi)存,free 函數(shù)釋放相應(yīng)內(nèi)存。第二,內(nèi)存分配器(例如 libc)內(nèi)部通過系統(tǒng)調(diào)用 brk 擴(kuò)展堆內(nèi)存(小塊內(nèi)存分配)。第三,內(nèi)存分配器(例如 libc)內(nèi)部通過系統(tǒng)調(diào)用 mmap 分配內(nèi)存映射區(qū)域(大塊內(nèi)存分配,默認(rèn)不小于 128 KB)第四,二或三已申請的虛擬內(nèi)存在首次寫入時觸發(fā)缺頁異常,OS 分配實(shí)際物理頁面,并將虛擬內(nèi)存與其相關(guān)聯(lián),記錄至頁表。 其中,步驟一至三均為虛擬內(nèi)存,步驟四分配實(shí)際物理內(nèi)存并創(chuàng)建相應(yīng)頁表。

ff3b4b9a-95fa-11ed-bfe3-dac502259ad0.jpg

傳統(tǒng)分析工具 gdb、Valgrind

在定位 mysql-proxy 內(nèi)存泄露(增長)問題的過程中,開發(fā)人員嘗試使用了 Valgrind Memcheck、gdb 進(jìn)行協(xié)助分析。最終前者實(shí)際效果不太理想;我通過后者分析出泄露原因,但整個過程耗費(fèi)了較多時間。 gdb 是常用的程序調(diào)試工具,好處不用贅述。但對于內(nèi)存泄露或增長問題,gdb 缺點(diǎn)也較為明顯,大致如下:干擾程序正常運(yùn)行,不適合生產(chǎn)環(huán)境;直接定位比較困難,且要求對源碼有一定了解。 Valgrind Memcheck 是一款知名度較高的內(nèi)存泄露分析工具,非常強(qiáng)大,開發(fā)調(diào)試過程中能夠快速發(fā)現(xiàn)場景的內(nèi)存泄露問題。不過開發(fā)者在使用之前,建議對以下情況有所了解:第一,需要重啟程序,且作為 Valgrind 子進(jìn)程運(yùn)行。不適合分析正在發(fā)生內(nèi)存增長的進(jìn)程第二,替代默認(rèn)的 malloc/free 等分配函數(shù),目標(biāo)進(jìn)程運(yùn)行速度減慢 20~30 倍。第三,不能很好的支持 tcmalloc、jemalloc 內(nèi)存分配器。(mysql-proxy 采用了 jemalloc 內(nèi)存分配器)

基于動態(tài)追蹤的通用分析方法

對于正在運(yùn)行、內(nèi)存持續(xù)增長的應(yīng)用來說,gdb、Valgrind Memcheck 工具其實(shí)都挺難發(fā)揮價值。相比而言,動態(tài)追蹤技術(shù)提供了一種通用且易用的方式。內(nèi)存分配器相關(guān)函數(shù)調(diào)用、系統(tǒng)調(diào)用、缺頁異常等,都可以看作一個個事件。通過對這些事件的追蹤、統(tǒng)計(jì)等,我們可以分析有關(guān)內(nèi)存使用情況的具體代碼路徑,在不深入源碼細(xì)節(jié)的前提下快速縮小泄露發(fā)生的范圍。 本文涉及兩種基于動態(tài)追蹤的通用分析方法:內(nèi)存分配器行為分析、缺頁異常事件分析,涵蓋應(yīng)用程序內(nèi)存分配的常見過程。

1)內(nèi)存分配器行為分析

內(nèi)存分配器(glibc、jemalloc 等)行為分析整體思路如下:首先,站在應(yīng)用視角,重點(diǎn)關(guān)注應(yīng)用程序內(nèi)存分配的代碼路徑。其次,動態(tài)追蹤內(nèi)存分配相關(guān)函數(shù),統(tǒng)計(jì)未釋放內(nèi)存分配的調(diào)用棧與總字節(jié)數(shù)量,形成分析工具 memstacks。
  • 開發(fā)新工具 memstacks

該工具支持生成兩種類型的火焰圖:一種是僅追蹤 malloc 及其變體函數(shù),不做 free 抵消,結(jié)果可用于生成全量內(nèi)存分配火焰圖。另一種是追蹤 malloc 及其變體函數(shù)、free 函數(shù),計(jì)算出追蹤期間未釋放的內(nèi)存分配,結(jié)果可用于生成未釋放內(nèi)存分配火焰圖。 其實(shí)現(xiàn)原理大致如下:借鑒現(xiàn)有 BCC 工具 memleak、mallocstacks,支持生成折疊棧,可生成全量內(nèi)存分配火焰圖、未釋放內(nèi)存分配火焰圖。借助 uprobes 動態(tài)追蹤 malloc(以及變體 cmalloc、realloc)、free。ff524c64-95fa-11ed-bfe3-dac502259ad0.jpg 如上圖所示,現(xiàn)有 BCC 工具 memleak、mallocstacks 各有優(yōu)劣。新工具 memstacks 結(jié)合兩者優(yōu)點(diǎn),允許有選擇性的生成全量內(nèi)存分配火焰圖或者未釋放內(nèi)存分配火焰圖需要的折疊棧格式。
  • 全量內(nèi)存分配火焰圖

執(zhí)行以下命令,追蹤 mysql-proxy 進(jìn)程所有 malloc 及其變體調(diào)用 60s,并生成全量內(nèi)存分配火焰圖。

	
# 步驟 1. 追蹤 60s,生成全量內(nèi)存分配折疊棧
# 其中,參數(shù) -a 表示追蹤所有的 malloc 及其變體,但不追蹤 free 進(jìn)行相互抵消。參數(shù) -f 表示生成折疊棧,用于步驟 2 生成火焰圖。
./memstacks -p $(pgrep -nx mysql-proxy) -af 60 > all_mallocs.stacks


# 步驟 2. 執(zhí)行下述命令生成全量內(nèi)存分配火焰圖,輸出至文件 all_mallocs.svg。
./flamegraph.pl --color=mem --title="All malloc() bytes Flame Graph" --countname="bytes" < all_mallocs.stacks > all_mallocs.svg
火焰圖如下所示,可以協(xié)助開發(fā)者理解 mysql-proxy 調(diào)用 malloc 及其變體的關(guān)鍵代碼路徑。ff5ca1dc-95fa-11ed-bfe3-dac502259ad0.jpg
  • 未釋放內(nèi)存分配火焰圖

執(zhí)行以下命令,追蹤 mysql-proxy 進(jìn)程未釋放 malloc 及其變體調(diào)用 60s,并生成內(nèi)存分配火焰圖。

	
# 步驟 1. 追蹤 60s,生成未釋放內(nèi)存分配折疊棧
# 其中,參數(shù) -f 表示生成折疊棧,用于步驟 2 生成火焰圖。
memstacks -p $(pgrep -nx mysql-proxy) -f 60 > unfreed_mallocs.stacks


# 步驟 2. 執(zhí)行下述命令生成未釋放內(nèi)存分配火焰圖,輸出到文件 unfreed_mallocs.svg。
./flamegraph.pl --color=mem --title="Unfreed malloc() bytes Flame Graph" --countname="bytes" < unfreed_mallocs.stacks > unfreed_mallocs.svg
火焰圖如下所示,其中:未釋放內(nèi)存共計(jì) 27.75 MB(追蹤期間,通過 pidstat 觀察到 mysql-proxy 進(jìn)程 RSS 增量接近 27 MB,與未釋放內(nèi)存統(tǒng)計(jì)量 27.75 MB 基本一致)。 已分配但未釋放的代碼路徑主要有兩處。其中,據(jù)研發(fā)反饋,tdsql::set_str 正是導(dǎo)致 mysql-proxy 內(nèi)存泄露發(fā)生的地方。而另一處并非真正的泄露。該工具有一定的副作用,由于追蹤的最后階段有一些剛分配的內(nèi)存還未來得及釋放,需要進(jìn)一步閱讀源碼甄別。另外,建議多運(yùn)行幾次對比下結(jié)果,排除那些經(jīng)常變化的分配路徑。ff66296e-95fa-11ed-bfe3-dac502259ad0.jpg 對已分配但未釋放的代碼路徑展開,結(jié)果如下:ff6d906e-95fa-11ed-bfe3-dac502259ad0.jpg

ff769812-95fa-11ed-bfe3-dac502259ad0.jpg ?相比全量內(nèi)存分配火焰圖,數(shù)據(jù)量減少近 60 倍,需要重點(diǎn)關(guān)注的代碼路徑的減少也比較明顯。因此,推薦優(yōu)先使用未釋放內(nèi)存分配火焰圖進(jìn)行分析。

2)缺頁異常事件分析

相比內(nèi)存分配器行為分析,缺頁異常事件分析提供了另一種視角,整體思路如下:首先,站在內(nèi)核視角,關(guān)注的是首次寫入觸發(fā)缺頁異常的代碼路徑,而不是觸發(fā)內(nèi)存分配的代碼路徑。前者是進(jìn)程 RSS增長的原因,后者僅分配了虛擬內(nèi)存,尚未映射物理內(nèi)存。其次,追蹤缺頁異常事件,統(tǒng)計(jì)未釋放物理內(nèi)存的調(diào)用棧與總頁面數(shù)量,形成分析工具 pgfaultstacks。
  • 現(xiàn)有分析工具

傳統(tǒng)工具 perf,基于軟件事件 page-faults

	
perfrecord-p$(pgrep-nxmysql-proxy)-epage-faults-c1-g--sleep60
BCC 工具 stackcount基于靜態(tài)追蹤點(diǎn) exceptions:page_fault_user。

	
stackcount -p $(pgrep -nx mysql-proxy) -U tpage_fault_user
現(xiàn)有分析工具雖然方便,但是以增量的方式去統(tǒng)計(jì),不考慮追蹤過程中被釋放的物理內(nèi)存,最終統(tǒng)計(jì)的結(jié)果通常會偏大,對內(nèi)存泄露(增長)的分析會造成干擾。
  • 缺頁異?;鹧鎴D(現(xiàn)有版)

執(zhí)行以下命令,追蹤 mysql-proxy 進(jìn)程所有缺頁事件 60s,并生成缺頁異常火焰圖。
perf record -p $(pgrep -nx mysql-proxy) -e page-faults -c 1 -g -- sleep 60 > pgfault.stacks


./flamegraph.pl --color=mem --title="Page Fault Flame Graph" --countname="pages" < pgfault.stacks > pgfault.svg
火焰圖具體如下,共計(jì) 420,342 次缺頁事件,但不是每一次缺頁事件都分配一個新的物理頁面(大多數(shù)情況下未分配),mysql-proxy RSS 實(shí)際增長量僅 60 多MB 。ff7f4d72-95fa-11ed-bfe3-dac502259ad0.jpg
  • 開發(fā)新工具 pgfaultstacks

該工具的實(shí)現(xiàn)原理大致如下:第一,改進(jìn)現(xiàn)有缺頁事件統(tǒng)計(jì)方式(過濾物理頁面已存在的缺頁事件,并在追蹤完成后讀取目標(biāo)進(jìn)程的內(nèi)存映射列表,通過計(jì)算將已釋放的物理頁面排除在外),僅關(guān)注真正泄露的物理內(nèi)存。 第二,借助 tracepoint 或 kprobe 動態(tài)追蹤 page faults 事件,一般情況下性能開銷可忽略不計(jì)。
  • 缺頁異常火焰圖

執(zhí)行以下命令,追蹤 mysql-proxy 進(jìn)程滿足過濾條件的缺頁事件 60s,并生成缺頁火焰圖。

	
# 步驟 1. 追蹤 60s,生成缺頁異常折疊棧。其中,參數(shù) -f 表示生成折疊棧,用于步驟 2 生成火焰圖。
pgfaultstacks -p $(pgrep -nx mysql-proxy) -f 60 > pgfault.stacks


# 步驟 2. 生成缺頁火焰圖,輸出到文件 pgfault.svg。
./flamegraph.pl --color=mem --title="Page Fault Flame Graph" --countname="pages" < pgfault.stacks > pgfault.svg
缺頁火焰圖如下,其中:共計(jì)增加 17801 個物理頁面(與 mysql-proxy 進(jìn)程 RSS 增量基本一致)。重點(diǎn)關(guān)注函數(shù) g_string_append_printf。(注:非內(nèi)存泄露發(fā)生的環(huán)境,僅用來演示缺頁異?;鹧鎴D)ff8b5e8c-95fa-11ed-bfe3-dac502259ad0.jpg 相比現(xiàn)有版,該版本的數(shù)據(jù)量減少 20 多倍,需要重點(diǎn)關(guān)注的代碼路徑減少也比較明顯。

總結(jié)

本文以 TDSQL 實(shí)際生產(chǎn)中 mysql-proxy 內(nèi)存泄露問題作為分析對象,探索基于動態(tài)追蹤技術(shù)的通用內(nèi)存泄露(增長)分析方法:內(nèi)存分配器行為分析、缺頁異常事件分析,并針對現(xiàn)有分析工具進(jìn)行改進(jìn),形成相應(yīng)的分析工具 memstacks、pgfaultstacks,歡迎各位開發(fā)者嘗試去開發(fā)。工具使用者僅需關(guān)注少數(shù)可能導(dǎo)致內(nèi)存泄露的代碼路徑,有效提升定位內(nèi)存泄露(增長)問題的效率。如果你正在遭受內(nèi)存泄露(增加)的困擾,不妨嘗試下本文提及的分析方法和工具,希望有所幫助。 審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3210

    瀏覽量

    76377
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73986
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3344

    瀏覽量

    60260

原文標(biāo)題:邢孟棒:2個壓箱底的方法和工具搞定內(nèi)存泄漏

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    從架構(gòu)到驅(qū)動:這三本經(jīng)典書,承包了我的嵌入式Linux入門與進(jìn)階

    作為一深耕嵌入式領(lǐng)域的開發(fā)者,書架上總有幾本“壓箱底” 的書 —— 它們既是新手入門的燈塔,也是老手復(fù)盤的手冊。今天想和大家聊聊幾本經(jīng)典的書,《ARM64 體系結(jié)構(gòu)編程與實(shí)踐》《鳥哥的 Linux
    的頭像 發(fā)表于 02-09 17:02 ?1164次閱讀

    Linux進(jìn)程管理不用愁!這6工具幫你搞定90%場景

    在 Linux 系統(tǒng)中,進(jìn)程是資源分配的基本單位,無論是服務(wù)器運(yùn)維、程序調(diào)試還是日常使用,掌握進(jìn)程管理工具都是必備技能。今天就帶大家梳理 6 最常用的進(jìn)程管理工具,從查看進(jìn)程到控制進(jìn)程,一篇文章全
    的頭像 發(fā)表于 02-04 16:23 ?1535次閱讀
    Linux進(jìn)程管理不用愁!這6<b class='flag-5'>個</b><b class='flag-5'>工具</b>幫你<b class='flag-5'>搞定</b>90%場景

    單片機(jī)的入門準(zhǔn)備

    買一塊單片機(jī)開發(fā)板,結(jié)合提供的原理圖和例程學(xué)習(xí)單片機(jī)的外設(shè)電路和片上資源的編程,每學(xué)習(xí)一功能塊,就要把這個功能塊搞懂,切忌三天打魚兩天曬網(wǎng),用學(xué)習(xí)板的弊端就是全靠自覺無人監(jiān)督很容易讓板子壓箱底; 2
    發(fā)表于 12-22 07:39

    高壓探和高壓差分探頭有什么區(qū)別?

    我們在使用功率放大器放大信號,或是需要檢測信號的時候,可能都會用到這樣一測試測量設(shè)備,那就是高壓探和高壓差分探頭,那么你知道高壓探和高壓差分探頭有什么區(qū)別嗎?一、高壓探和差分探
    的頭像 發(fā)表于 11-19 08:38 ?490次閱讀
    高壓探<b class='flag-5'>棒</b>和高壓差分探頭有什么區(qū)別?

    ETHERCAT從站轉(zhuǎn)PROFINET,一網(wǎng)關(guān)全搞定

    ETHERCAT從站轉(zhuǎn)PROFINET,一網(wǎng)關(guān)全搞定 在礦山深處,一套嶄新的自動化系統(tǒng)正悄然改變著設(shè)備保護(hù)的格局。面對井下復(fù)雜的工況和多品牌控制設(shè)備共存的現(xiàn)狀,我們設(shè)計(jì)的這套保護(hù)系統(tǒng)巧妙解決了
    的頭像 發(fā)表于 10-22 10:03 ?313次閱讀
    ETHERCAT從站轉(zhuǎn)PROFINET,一<b class='flag-5'>個</b>網(wǎng)關(guān)全<b class='flag-5'>搞定</b>

    WebGL/Canvas 內(nèi)存泄露分析

    在構(gòu)建高性能、長周期運(yùn)行的 WebGL/Canvas 應(yīng)用(如 3D 編輯器、數(shù)據(jù)可視化平臺)時,內(nèi)存管理是一至關(guān)重要且極具挑戰(zhàn)性的課題。 開發(fā)者通常面臨的內(nèi)存泄漏問題,其根源遠(yuǎn)比簡
    的頭像 發(fā)表于 10-21 11:40 ?410次閱讀
    WebGL/Canvas <b class='flag-5'>內(nèi)存</b>泄露分析

    效率翻倍!量產(chǎn)燒錄工具使用技巧大公開~

    告別繁瑣燒錄流程!這款高效量產(chǎn)工具讓你事半功倍。今天把壓箱底的使用技巧全公開,簡單幾步輕松上手,不領(lǐng)真的虧了! 本文以Air780EPM開發(fā)板為例,演示量產(chǎn)燒錄工具的使用步驟。 ? 最新量產(chǎn)燒錄
    的頭像 發(fā)表于 10-09 18:50 ?385次閱讀
    效率翻倍!量產(chǎn)燒錄<b class='flag-5'>工具</b>使用技巧大公開~

    at_device 包 ml307長時間運(yùn)行有內(nèi)存泄漏問題怎么解決?

    使用 at_device 包中的 ml307 包長時間運(yùn)行有大量內(nèi)存泄漏問題,大概漲了20K,求助解決。
    發(fā)表于 09-24 07:41

    請問如何優(yōu)化OpenVINO?工具套件中的內(nèi)存使用?

    運(yùn)行OpenVINO?推斷時找不到優(yōu)化內(nèi)存使用情況的方法。
    發(fā)表于 06-25 06:56

    在OpenVINO? C++代碼中啟用 AddressSanitizer 時的內(nèi)存泄漏怎么解決?

    在 OpenVINO? C++代碼中啟用 AddressSanitizer 時遇到內(nèi)存泄漏: \"#0 0xaaaab8558370 in operator new(unsigned
    發(fā)表于 06-23 07:16

    鴻蒙5開發(fā)寶藏案例分享---內(nèi)存優(yōu)化實(shí)戰(zhàn)指南

    ,里面提供的工具和技巧簡直太香了!很多案例和方法,在實(shí)際開發(fā)中真的能救命,避免應(yīng)用卡頓、崩潰,還能讓設(shè)備續(xù)航更持久。 今天就來跟大家好好分享這份寶藏,結(jié)合官方內(nèi)容和我的理解,整理成這篇實(shí)戰(zhàn)性超強(qiáng)的內(nèi)存優(yōu)化
    發(fā)表于 06-12 17:15

    HarmonyOS優(yōu)化應(yīng)用內(nèi)存占用問題性能優(yōu)化一

    應(yīng)用開發(fā)過程中注重內(nèi)存管理,積極采取措施來減少內(nèi)存占用,以優(yōu)化應(yīng)用程序的性能和用戶體驗(yàn)。 HarmonyOS提供了一些內(nèi)存管理的工具和接口,幫助開發(fā)者有效地管理
    發(fā)表于 05-21 11:27

    快問快答:泄漏等級有哪些?含閥門氣密性檢測原理方法和解決方案

    一、閥門的泄漏等級想象一下,一座化工廠的關(guān)鍵管道上,一微小的閥門泄漏可能造成數(shù)百萬的損失甚至安全事故。這就是為什么閥門泄漏等級成為工業(yè)界的「生命線」。閥門的
    的頭像 發(fā)表于 04-16 11:34 ?4516次閱讀
    快問快答:<b class='flag-5'>泄漏</b>等級有哪些?含閥門氣密性檢測原理<b class='flag-5'>方法</b>和解決方案

    推薦兩款菲力爾氣體泄漏檢測神器

    在石化行業(yè),氣體泄漏是安全生產(chǎn)的“大敵”。如何快速、精準(zhǔn)地檢測泄漏,成了企業(yè)關(guān)注的焦點(diǎn)。今天,小菲就帶大家聊聊菲力爾的兩款“氣體泄漏檢測神器”——FLIR Si2x系列聲學(xué)成像儀和Gx
    的頭像 發(fā)表于 04-07 11:22 ?1020次閱讀

    快速搞懂C語言程序內(nèi)存分區(qū)!

    到動態(tài)分配的數(shù)據(jù)等內(nèi)容。(內(nèi)存分區(qū)圖示)理解這些內(nèi)存分區(qū)的結(jié)構(gòu)和特性,不僅有助于編寫更高效的代碼,還能幫助排查和解決如段錯誤、內(nèi)存泄漏、棧溢出等常見問題。以下是常見的六
    的頭像 發(fā)表于 03-14 17:37 ?1575次閱讀
    快速搞懂C語言程序<b class='flag-5'>內(nèi)存</b>分區(qū)!