Month: 2021-07

【前言】 這是一次難得的辦案經驗。 上週處理 Out Of Memory 茶包在爬文時查到好幾篇文章提到 「.NET 32bit 程式的可用記憶體上限是 800M」,與我所知的 1.6G 明顯不符,但官方文件卻指證歷歷,在我心中成為不解之謎。 想挖掘真相,但發現自己根基不穩技能不足,第一次為了破案去...

今天講另一個大家可能遇過的狀況:程式噴出 Out Of Memory 記憶體不足錯誤,也確信它用到大量記憶體,但打開工作管理員檢查,該程式的記憶體用量卻只有幾百 MB,看起來很平常。 要探討這個問題,先要用範例程式重現情境。 昨天文章最後有個持續建立大型 byte[] 物件耗光記憶體的程式範例,32...

昨天文章提到,85000 Bytes 以下的物件會建立在 SOH、超過的大型物件則會建立在 LOH。LOH 與 SOH 的一項重要差異是 - LOH 會隨 G2 回收回收不用的物件記憶體,但不會進行壓實(Compact,搬移物件讓物件緊密相鄰),因此被清掉物件會形成空洞穿插在留存物件間,空洞可重複利...

前幾天解決完非典型 Out Of Memory 茶包,感覺自己雖然寫了這麼多年 .NET,對記憶體管理的了解仍偏虛浮,只知道背後有個強大的 GC 會負責找記憶體空間放物件,物件不用了會自動回收空間,完全不用我們操煩。需要物件時 new 一下,不要殘留變數、屬性指向超出變數範圍(Scope)的物件,....

幫忙看了一個 Excel 批次匯出作業記憶體不足錯誤,是我之前沒見過的樣態,增廣見聞之餘順手記錄一下。 問題情境是有個能批次匯出 Excel 報表檔的 Windows Form 程式,負責查詢資料庫後以來源代碼為單位,一個來源匯成一個 Excel 檔案,程式以 VB.NET 撰寫 (哈,好久沒看到你...

玩了一陣子 SSD1306 OLED 顯示器,也玩了幾回點陣中文字型,是時侯把它們結合在一起 - 試試在單色 OLED 上顯示中文。 之前我主要用 Adafruit 驅動程式庫接 SSD1306 OLED,其文字顯示侷限在 ASCII 字元集,要顯示 Unicode 字元,大部分人會使用 U8g2 ...

Windows 剛重新開機,登入先開好 Chrome 準備 Google 爬文,還在想關鍵字時聽到筆電散熱風扇聲變大,莫非有程式在吃 CPU? 開啟工作管理員證實了這點,而兇手意外是停在 Google 首頁什麼事還沒做的 Chrome,正在耗用 50% ~ 90% CPU,起初還以為被埋了程式挖礦,...

即便前端發展已十分成熟,幾乎無所不能,但仍有些必須依賴 ASP.NET WebForm 的場合 - 例如,在前端專案中整合既有系統的 WebForm 網頁。如果該系統成熟且穩定,年資還比你多三倍,嚷著把它換掉改用前端重寫,通常老闆想換掉的會是你。另外,有些技術目前只有 WebForm 解決方案,Re...

要徹底惹毛急性子使用者,我有個好法子 - 讓程式跑慢一點,然後不要回報執行進度,等上幾次,對方便會變身浩克怒摔滑鼠鍵盤,嚴重一點說不定會氣急攻心中風身亡,別人我不敢說,這招對我絕對有效。 反之,開發程式遇到等待的耗時作業,即時回報處理進度可大大安撫使用者心情,因而願意耐心等待,依經驗,只要保持幾十秒...

今天這篇屬於前端開發的單兵基本教練,練習為耗時的 AJAX 呼叫製作載入中狀態顯示,如以下效果: 針對較耗時的 AJAX 呼叫,在等待結果回傳期間顯示轉圈圈之類的載入動畫,安撫使用者情緒提供明確的執行狀態回饋,同時封鎖網頁介面並防止使用者在等待期間繼續操作造成動線混亂。這種效果相信大家一定都看過,...