亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

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

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

如何解決JVM解釋器導(dǎo)致應(yīng)用崩潰的bug

Rokr_wireless_t ? 來(lái)源:openEuler ? 作者:宋堯飛 ? 2021-08-27 09:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編者按:筆者遇到一個(gè)非常典型的問(wèn)題,應(yīng)用在 X86 正常運(yùn)行,在 AArch64 上 JVM 就會(huì)崩潰。這個(gè)典型的 JVM 內(nèi)部問(wèn)題。筆者通過(guò)分析最終定位到是由于 JVM 中模板解釋器代碼存在 bug 導(dǎo)致在弱內(nèi)存模型的平臺(tái)上 Crash。

在分析過(guò)程中,涉及到非常多的 JVM 內(nèi)部知識(shí),比如對(duì)象頭、GC 復(fù)制算法操作、CAS 操作、字節(jié)碼執(zhí)行、內(nèi)存序等,希望對(duì)讀者有所幫助。本文介紹了一般分析 JVM crash 的方法,并且深入介紹了為什么在 aarch64 平臺(tái)上引起這樣的問(wèn)題,最后還給出了修改方法并推送到上游社區(qū)中。**對(duì)于使用非畢昇 JDK 的其他 JDK 只有在 jdk8u292、jdk11.0.9、jdk15以后的版本才得到修復(fù),讀者使用時(shí)需要注意版本選擇避免這類(lèi)問(wèn)題發(fā)生。

背景知識(shí)

java 程序在發(fā)生 crash 時(shí),會(huì)生成 hs_err_pid.log 文件,以及 core 文件(需要操作系統(tǒng)開(kāi)啟相關(guān)設(shè)置),其中 hs_err 文件以文本格式記錄了 crash 發(fā)生位置的小范圍精確現(xiàn)場(chǎng)信息(調(diào)用棧、寄存器、線(xiàn)程棧、致命信號(hào)、指令上下文等)、jvm 各組件狀態(tài)信息(java 堆、jit 事件、gc 事件)、系統(tǒng)層面信息(環(huán)境變量、入?yún)ⅰ?nèi)存使用信息、系統(tǒng)版本)等,精簡(jiǎn)記錄了關(guān)鍵信息。而 core 文件是程序崩潰時(shí)進(jìn)程的二進(jìn)制快照,完整記錄了崩潰現(xiàn)場(chǎng)信息,可以使用 gdb 工具來(lái)打開(kāi) core 文件,恢復(fù)出一個(gè)崩潰現(xiàn)場(chǎng),方便分析。

約束

文中描述的問(wèn)題適用于 jdk8u292 之前的版本。

現(xiàn)象

某業(yè)務(wù)線(xiàn)隔十天半個(gè)月總會(huì)報(bào)過(guò)來(lái) crash 問(wèn)題,crash 位置比較統(tǒng)一,都是在某處執(zhí)行 young gc 的上下文中,crash 的直接原因是 java 對(duì)象的頭被寫(xiě)壞了,比如這樣:

3ffdd0c6-f467-11eb-9bcf-12bb97331649.png

而正常的對(duì)象頭由 markoop 和 metadata 兩部分組成,前者存放該對(duì)象的 hash 值、年齡、鎖信息等,后者存放該對(duì)象所屬的 Klass 指針。這里關(guān)注的是 markoop,64 位機(jī)器上它的具體布局如下:

4031612a-f467-11eb-9bcf-12bb97331649.png

每種布局中每個(gè)字段的詳細(xì)含義可以在 jdk 源碼 jdk8u/hotspot/src/share/vm/oops/markOop.hpp 中找到,這里簡(jiǎn)單給出結(jié)論就是 gc 階段一個(gè)正常對(duì)象頭中的 markoop 不可能是全 0,而是比如這樣:

4079be70-f467-11eb-9bcf-12bb97331649.png

此外,crash 時(shí)間上也有個(gè)特點(diǎn):基本每次都發(fā)生在程序剛啟動(dòng)時(shí)的幾秒內(nèi)。

分析

發(fā)生 crash 的 java 對(duì)象有個(gè)一致的特點(diǎn),就是總位于 eden 區(qū),我們仔細(xì)分析了 crash 位置的 gc 過(guò)程邏輯,特別是會(huì)在 gc 期間修改對(duì)象頭的相關(guān)源碼更是重點(diǎn)關(guān)注對(duì)象,因?yàn)槟菈K代碼為了追求性能,使用了無(wú)鎖編程

40978e3c-f467-11eb-9bcf-12bb97331649.png

補(bǔ)充介紹一下 CAS(Compare And Swap),CAS 的完整意思是比較并替換,并且確保整個(gè)操作原子性。CAS 需要 3 個(gè)操作數(shù):內(nèi)存地址 dst,比較值 cmp,要更新的目標(biāo)值 value。當(dāng)且僅當(dāng)內(nèi)存地址 dst 上的值跟比較值 cmp 相等時(shí),將內(nèi)存地址 dst 上的值改寫(xiě)為 value,否則就什么都不做,其在 aarch64 上的匯編實(shí)現(xiàn)類(lèi)似如下:

40ca60aa-f467-11eb-9bcf-12bb97331649.png

然而我們經(jīng)過(guò)反復(fù)推敲,這塊 gc 邏輯似乎無(wú)懈可擊,而且位于 eden 區(qū)也意味著沒(méi)有被 gc 搬移過(guò)的可能性,這個(gè)問(wèn)題在很長(zhǎng)時(shí)間里陷入了停滯……

直到某一天又收到了一個(gè)類(lèi)似的 crash,這個(gè)問(wèn)題才迎來(lái)了轉(zhuǎn)機(jī)。在這個(gè) crash 里,也是 java 對(duì)象的頭被寫(xiě)壞了,但特殊的地方在于,頭上的錯(cuò)誤值是 0x2000,憑著職業(yè)敏感,我們猜測(cè)這個(gè)特殊的錯(cuò)誤值是否來(lái)自這個(gè) java 對(duì)象本身呢?這個(gè)對(duì)象的 Java 名字叫 DynamicByteBuffer,來(lái)自某個(gè)基礎(chǔ)組件。反編譯得到了問(wèn)題類(lèi) DynamicByteBuffer 的代碼:

4122ad64-f467-11eb-9bcf-12bb97331649.png

再結(jié)合 core 信息中其他正常 DynamicByteBuffer 對(duì)象的布局,確定了這個(gè)特殊的 0x2000 值原本應(yīng)該位于 segmentSize 字段上,而且從代碼中注意到這個(gè) segmentSize 字段是 final 屬性,意味著其值只可能在實(shí)例構(gòu)造函數(shù)中被設(shè)置,使用 jdk 自帶的命令 javap 進(jìn)行反匯編,得到對(duì)應(yīng)的字節(jié)碼如下:

414aef18-f467-11eb-9bcf-12bb97331649.png

putfield 這條字節(jié)碼的作用是給 java 對(duì)象的一個(gè)字段賦值,在紅框中的語(yǔ)義就是給 DynamicByteBuffer 對(duì)象的 segmentSize 字段賦值。

分析到這里,我們做一下小結(jié),crash 的第一現(xiàn)場(chǎng)并非在 gc 上下文中,而是得往前追溯,發(fā)生在這個(gè) java 對(duì)象被初始化期間,這期間在初始化它的 segmentSize 字段時(shí),因?yàn)槟撤N原因,0x2000 被寫(xiě)到了對(duì)象頭上。

接下來(lái)繼續(xù)分析, JDK 在發(fā)生 crash 時(shí)會(huì)自動(dòng)生成的 hs_err 日志,其中有記錄最近發(fā)生的編譯事件 “Compilation events (250 events)”,從中沒(méi)有發(fā)現(xiàn) DynamicByteBuffer 構(gòu)造函數(shù)相關(guān)的編譯事件,所以可以推斷 crash 時(shí) DynamicByteBuffer 這個(gè)類(lèi)的構(gòu)造函數(shù)尚未被編譯過(guò)(由于 crash 發(fā)生在程序啟動(dòng)那幾秒,JIT 往往需要預(yù)熱后才會(huì)介入,所以可以假設(shè)記錄的比較完整),這意味著,它的構(gòu)造函數(shù)只會(huì)通過(guò)模板解釋器去執(zhí)行,更具體地說(shuō),是去執(zhí)行模板解釋器中的 putfield 指令來(lái)把 0x2000 寫(xiě)到 segmentSize 字段位置。

具體怎么寫(xiě)其實(shí)很簡(jiǎn)單,就是先拿到 segmentSize 字段的偏移量,根據(jù)偏移量定位到寫(xiě)的位置,然后寫(xiě)入。然而 JVM 的模板解釋器在實(shí)現(xiàn)這個(gè) putfield 指令時(shí),額外增加了一條快速實(shí)現(xiàn)路徑,在 runtime 期間會(huì)自動(dòng)(具體的時(shí)間點(diǎn)是 “完整” 執(zhí)行完第一次 putfield 指令后)從慢速路徑切到快速路徑上,這個(gè)切換操作的實(shí)現(xiàn)全程沒(méi)有加鎖,同步完全依賴(lài) barrier。

注:圖中 bcp 指的是 bytecode pointer,就是讀字節(jié)碼。

上圖表示接近同一時(shí)間點(diǎn)前后,兩條并行流分別構(gòu)建一個(gè) DynamicByteBuffer 類(lèi)型的對(duì)象過(guò)程中,各自完成 segmentSize 字段賦值的過(guò)程,用 Java 代碼簡(jiǎn)單示意如下:

41ef86f4-f467-11eb-9bcf-12bb97331649.png

其中第一條執(zhí)行流走的慢速路徑,第二條走的快速路徑,可以留意到,紅色標(biāo)識(shí)的是幾次公共內(nèi)存的訪(fǎng)存操作,barrier 就分布在這些位置前后(標(biāo)在下圖中)。

接下來(lái)再給一個(gè)更加精確一點(diǎn)的指令流模型

簡(jiǎn)單介紹一下這個(gè)設(shè)計(jì)模型:

線(xiàn)程從記錄了指令的內(nèi)存地址 bcp(bytecode pointer) 上取出指令,然后跳轉(zhuǎn)到該指令地址上執(zhí)行,當(dāng)取出的指令是 bcp1(比如 putfeild 指令的慢速路徑)時(shí)就是圖中左邊的指令流;

左邊的指令流就是計(jì)算出字段的 offset 并 str 到指定內(nèi)存地址,然后插入 barrier,最后將 bcp2 指令(比如 putfeild 指令的快速路徑)覆寫(xiě)到步驟 1 中的內(nèi)存地址 addr 上;

后續(xù)線(xiàn)程繼續(xù)執(zhí)行步驟 1 時(shí),由于取出的指令變成了 bcp2,就改為跳轉(zhuǎn)到圖中右邊的指令流;

右邊的指令流就是直接取出步驟 2 中已經(jīng)存到指定內(nèi)存地址中的 offset。

回顧整個(gè)設(shè)計(jì)模型,左邊的指令流通過(guò)一個(gè)等效于完整 dmb 的 barrier 來(lái)保證 str offset 和 str bcp2 這兩條 str 指令的執(zhí)行順序并且全局可見(jiàn);而右邊的指令流中,ldr bcp 和 ldr offset 這兩條 ldr 指令之間沒(méi)有任何 barrier,設(shè)計(jì)者可能認(rèn)為一個(gè)無(wú)條件跳轉(zhuǎn)指令可以為兩條 ldr 指令建立依賴(lài),從而保證執(zhí)行順序,然而從實(shí)測(cè)結(jié)果來(lái)看是不成立的。

這里先來(lái)簡(jiǎn)單補(bǔ)充介紹一下內(nèi)存順序模型的概念,現(xiàn)代 CPU 為了提高執(zhí)行效率,在指令的執(zhí)行順序上擁有很大的自主權(quán),對(duì)每個(gè)獨(dú)立的 CPU 來(lái)說(shuō),只要確保語(yǔ)義不變,實(shí)際如何執(zhí)行都有可能,這種方式對(duì)于單個(gè) CPU 來(lái)說(shuō)沒(méi)有問(wèn)題,當(dāng)放到多個(gè) CPU 共享數(shù)據(jù)的時(shí)候,這種亂序執(zhí)行的行為就會(huì)引發(fā)每個(gè) CPU 看到數(shù)據(jù)的順序不一致問(wèn)題,導(dǎo)致跨 CPU 的程序邏輯亂套了。這就需要對(duì)讀、寫(xiě)內(nèi)存指令進(jìn)行約束,來(lái)規(guī)范每個(gè) CPU 看到的內(nèi)存生效行為,由此提出了內(nèi)存順序模型的概念:

其中 ARM 采用的是一種弱內(nèi)存模型,這種模型默認(rèn)對(duì)讀、寫(xiě)指令沒(méi)有任何約束,需要由程序員自己通過(guò)插入 barrier 來(lái)手動(dòng)保證。

再回到這個(gè)問(wèn)題上,測(cè)試方式是在 ldr offset 指令后額外加了檢測(cè)指令:

就是檢查 offset 值是否為 0,如果為 0 則直接強(qiáng)制 crash(設(shè)計(jì)上保證了 java 對(duì)象的任何實(shí)例字段的 offset 不可能是 0)。

經(jīng)過(guò)長(zhǎng)時(shí)間測(cè)試,程序果然在這個(gè)位置觸發(fā)了 crash!這說(shuō)明上面提到的兩條 ldr 指令不存在依賴(lài)關(guān)系,或者說(shuō)這種依賴(lài)關(guān)系類(lèi)似 ARMv8 手冊(cè)中描述的條件依賴(lài),并不能保證執(zhí)行順序。ldr offset 指令先于 ldr bcp 執(zhí)行,使得讀到一個(gè)非法的 offset 值 0。更說(shuō)明了,這才是這個(gè)案例的第一案發(fā)現(xiàn)場(chǎng)!

找到了問(wèn)題的根因后,解決方法也就順利出爐了,那就是在兩條 ldr 指令之間插入 barrier 來(lái)確保這兩條 ldr 指令不發(fā)生亂序。實(shí)測(cè)證明,這種修復(fù)方案非常有效,這類(lèi) crash 現(xiàn)象消失。

詳細(xì)的修復(fù) patch 見(jiàn) https://hg.openjdk.java.net/jdk/jdk/rev/b9529fcbbd33 。目前已經(jīng) backport 到 jdk8u292、jdk11.0.9、jdk15。

總結(jié)

Java 虛擬機(jī) (JVM) 為了追求性能,大量使用了無(wú)鎖編程進(jìn)行設(shè)計(jì),而且這么多年以來(lái) JDK(特別是 JDK8)主要都是面向 X86 平臺(tái)開(kāi)發(fā)的,如今才慢慢的開(kāi)始支持 aarch64 平臺(tái),所以 aarch64 弱內(nèi)存序問(wèn)題是我們面臨的一個(gè)比較嚴(yán)峻的挑戰(zhàn)。

后記

如果遇到相關(guān)技術(shù)問(wèn)題(包括不限于畢昇 JDK),可以進(jìn)入畢昇 JDK 社區(qū)查找相關(guān)資源(點(diǎn)擊原文進(jìn)入官網(wǎng)),包括二進(jìn)制下載、代碼倉(cāng)庫(kù)、使用教學(xué)、安裝、學(xué)習(xí)資料等。畢昇 JDK 社區(qū)每雙周周二舉行技術(shù)例會(huì),同時(shí)有一個(gè)技術(shù)交流群討論 GCC、LLVM、JDK 和 V8 等相關(guān)編譯技術(shù),感興趣的同學(xué)可以添加如下微信小助手,回復(fù) Compiler 入群。

責(zé)任編輯:haq

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

    關(guān)注

    2

    文章

    440

    瀏覽量

    34748
  • JVM
    JVM
    +關(guān)注

    關(guān)注

    0

    文章

    161

    瀏覽量

    12914

原文標(biāo)題:一個(gè) JVM 解釋器 bug 在 AArch64 平臺(tái)導(dǎo)致應(yīng)用崩潰的問(wèn)題分析

文章出處:【微信號(hào):wireless-tag,微信公眾號(hào):?jiǎn)⒚髟贫丝萍肌繗g迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    M058多次寫(xiě)入數(shù)據(jù)閃存會(huì)崩潰怎么解決?

    我的 m058 沒(méi)有作系統(tǒng),W/R dataflash 成功了,但是有一個(gè)問(wèn)題:寫(xiě)入 dataflash 多次 m058 會(huì)崩潰,請(qǐng)問(wèn)如何解決這個(gè)問(wèn)題? 代碼如下: int32_t
    發(fā)表于 08-27 08:21

    IP地址沖突導(dǎo)致德國(guó)站群服務(wù)斷網(wǎng)的解決方法?

    在網(wǎng)絡(luò)管理中,IP地址沖突是一個(gè)常見(jiàn)且令人頭疼的問(wèn)題。尤其是對(duì)于依賴(lài)站群服務(wù)進(jìn)行大規(guī)模網(wǎng)絡(luò)操作的企業(yè)而言,IP沖突可能會(huì)導(dǎo)致整個(gè)服務(wù)群組無(wú)法正常工作,從而造成嚴(yán)重的業(yè)務(wù)中斷。本文將探討如
    的頭像 發(fā)表于 08-12 15:47 ?524次閱讀

    服務(wù)數(shù)據(jù)恢復(fù)—raid5陣列多塊硬盤(pán)離線(xiàn)導(dǎo)致raid崩潰的數(shù)據(jù)恢復(fù)

    一臺(tái)服務(wù)中有5塊硬盤(pán),其中的4塊組建了一組RAID5陣列,剩下一塊盤(pán)作為熱備盤(pán)(Hot-Spare)使用。服務(wù)操作系統(tǒng)為linux,應(yīng)用系統(tǒng)為構(gòu)架于oracle數(shù)據(jù)庫(kù)的一個(gè)oa。 raid5
    的頭像 發(fā)表于 07-17 14:37 ?344次閱讀
    服務(wù)<b class='flag-5'>器</b>數(shù)據(jù)恢復(fù)—raid5陣列多塊硬盤(pán)離線(xiàn)<b class='flag-5'>導(dǎo)致</b>raid<b class='flag-5'>崩潰</b>的數(shù)據(jù)恢復(fù)

    Keil單步調(diào)試顯示在USBPHYC狀態(tài)校驗(yàn)中計(jì)數(shù)超時(shí)導(dǎo)致進(jìn)入異常,要如何解決這個(gè)問(wèn)題呢?

    Keil單步調(diào)試顯示在USBPHYC狀態(tài)校驗(yàn)中計(jì)數(shù)超時(shí)導(dǎo)致進(jìn)入異常。要如何解決這個(gè)問(wèn)題呢?
    發(fā)表于 06-17 07:58

    工業(yè)APP頻繁崩潰?聚徽廠(chǎng)家分享安卓工控機(jī)內(nèi)存碎片化與進(jìn)程管理優(yōu)化指南

    與進(jìn)程管理兩大核心維度,深入剖析崩潰根源,并提出系統(tǒng)性?xún)?yōu)化方案。 一、內(nèi)存碎片化:工業(yè)APP崩潰的隱形推手 1. 內(nèi)存碎片化的成因與危害 內(nèi)存碎片化是指內(nèi)存中存在大量零散、不連續(xù)的空閑空間,導(dǎo)致無(wú)法分配大塊連續(xù)內(nèi)存。在工業(yè)場(chǎng)
    的頭像 發(fā)表于 06-10 10:24 ?290次閱讀

    CYPD3177-24LQXQ適配器電壓崩潰怎么解決?

    您好,我正在使用 CYPD3177 pd 控制,但是在我在附件中共享的設(shè)置中,v 總線(xiàn) POWER_DRILL2GO POWER_DRILL2GO發(fā)生崩潰。 當(dāng)我使用 pd 分析查看時(shí),我還可
    發(fā)表于 05-26 06:27

    如何避免存儲(chǔ)示波器再次崩潰?

    ≥300W)。 電源濾波 措施:在電源輸入端加裝EMI濾波(如Tripp Lite ISOBAR),抑制高頻干擾,避免因電源噪聲導(dǎo)致系統(tǒng)崩潰。 2. 硬件散熱與維護(hù) 散熱優(yōu)化 清潔周期:每季度清理
    發(fā)表于 05-23 14:47

    服務(wù)數(shù)據(jù)恢復(fù)—Linux系統(tǒng)服務(wù)崩潰的數(shù)據(jù)恢復(fù)案例

    服務(wù)數(shù)據(jù)恢復(fù)環(huán)境: linux操作系統(tǒng)服務(wù)中有一組由4塊SAS接口硬盤(pán)組建的raid5陣列。 服務(wù)故障: 服務(wù)工作過(guò)程中突然崩潰
    的頭像 發(fā)表于 05-20 15:46 ?438次閱讀

    服務(wù)數(shù)據(jù)恢復(fù)—raid5陣列中硬盤(pán)壞道導(dǎo)致陣列崩潰的數(shù)據(jù)恢復(fù)案例

    文件。 存儲(chǔ)中的數(shù)據(jù)包括:數(shù)十臺(tái)iunx系統(tǒng)虛擬機(jī)和windows系統(tǒng)虛擬機(jī)、壓縮包文件、配置文件。 服務(wù)存儲(chǔ)故障: raid5陣列中多塊硬盤(pán)出現(xiàn)問(wèn)題,陣列崩潰,數(shù)據(jù)丟失。
    的頭像 發(fā)表于 03-28 13:25 ?504次閱讀
    服務(wù)<b class='flag-5'>器</b>數(shù)據(jù)恢復(fù)—raid5陣列中硬盤(pán)壞道<b class='flag-5'>導(dǎo)致</b>陣列<b class='flag-5'>崩潰</b>的數(shù)據(jù)恢復(fù)案例

    虛擬化數(shù)據(jù)恢復(fù)—VMware虛擬化環(huán)境下重裝系統(tǒng)導(dǎo)致服務(wù)數(shù)據(jù)丟失的數(shù)據(jù)恢復(fù)

    VMware虛擬化平臺(tái) vmfs文件系統(tǒng) 工作人員誤操作重裝操作系統(tǒng),服務(wù)崩潰。 重裝系統(tǒng)會(huì)導(dǎo)致文件系統(tǒng)元文件被覆蓋。要恢復(fù)數(shù)據(jù),必須找到&提取重裝系統(tǒng)前的文件系統(tǒng)殘留信息,通過(guò)提取出來(lái)的元文件信息恢復(fù)虛擬磁盤(pán)。通過(guò)拼接
    的頭像 發(fā)表于 03-13 10:33 ?568次閱讀
    虛擬化數(shù)據(jù)恢復(fù)—VMware虛擬化環(huán)境下重裝系統(tǒng)<b class='flag-5'>導(dǎo)致</b>服務(wù)<b class='flag-5'>器</b>數(shù)據(jù)丟失的數(shù)據(jù)恢復(fù)

    RAM容量不足導(dǎo)致的數(shù)據(jù)溢出如何預(yù)防和處理?

    在 STM32F411 中,RAM 容量是有限的,特別是在進(jìn)行復(fù)雜的數(shù)據(jù)處理和存儲(chǔ)時(shí),可能會(huì)遇到數(shù)據(jù)溢出問(wèn)題。數(shù)據(jù)溢出是指程序運(yùn)行時(shí),數(shù)據(jù)超出了 RAM 的分配區(qū)域,導(dǎo)致程序崩潰或數(shù)據(jù)丟失。STM32F411 的 RAM 容量為 128KB,在處理較大數(shù)據(jù)量時(shí),容易出現(xiàn)內(nèi)
    發(fā)表于 03-07 16:09

    磁極是如何解決磁集成產(chǎn)品電磁干擾的?

    磁集成后,有哪些新的電磁干擾源?該如何解決這些新的干擾源?磁極又是如何解決這些問(wèn)題的? 磁集成后,EMC比分立磁性元件更難通過(guò),到底是什么原因導(dǎo)致的?磁性元件企業(yè)又有哪些辦法可以解決?今天我們采訪(fǎng)
    的頭像 發(fā)表于 12-06 11:27 ?945次閱讀
    磁極是如<b class='flag-5'>何解</b>決磁集成產(chǎn)品電磁干擾的?

    服務(wù)數(shù)據(jù)恢復(fù)—多塊硬盤(pán)離線(xiàn)導(dǎo)致EVA存儲(chǔ)崩潰的數(shù)據(jù)恢復(fù)案例

    一臺(tái)HP EVA存儲(chǔ)中有23塊硬盤(pán),掛接到一臺(tái)windows server操作系統(tǒng)的服務(wù)。 EVA存儲(chǔ)上有三個(gè)硬盤(pán)指示燈亮黃燈,此刻存儲(chǔ)還能正常使用。管理員在更換硬盤(pán)的過(guò)程中,又出現(xiàn)一塊硬盤(pán)對(duì)應(yīng)的指示燈亮黃燈,存儲(chǔ)崩潰,無(wú)法使用了。
    的頭像 發(fā)表于 12-03 13:32 ?665次閱讀
    服務(wù)<b class='flag-5'>器</b>數(shù)據(jù)恢復(fù)—多塊硬盤(pán)離線(xiàn)<b class='flag-5'>導(dǎo)致</b>EVA存儲(chǔ)<b class='flag-5'>崩潰</b>的數(shù)據(jù)恢復(fù)案例

    如何使用Ozone分析Cortex-M異常

    Ozone可以幫助用戶(hù)快速分析和查找導(dǎo)致CPU故障的軟件bug。本文解釋如何使用Ozone的調(diào)試功能,深入了解Cortex-M架構(gòu)上的這些錯(cuò)誤。
    的頭像 發(fā)表于 11-29 11:14 ?2276次閱讀
    如何使用Ozone分析Cortex-M異常

    變頻主電路的故障如何解決 | 導(dǎo)致變頻主板故障的原因是什么

    的可能性。使這類(lèi)故障大大減少。 原文標(biāo)題:變頻主電路的故障如何解決 | 導(dǎo)致變頻主板
    的頭像 發(fā)表于 11-20 15:20 ?1419次閱讀