.NET 全球化API 和 ICU 對CultureInfo的影響

.NET 全球化API 和ICU對CultureInfo的影響 之封面

前陣子實作貨幣的數字中文大寫轉換時,發現Microsoft Visual Studio International Feature Pack 2.0中就有內建的數字轉中文大寫,實作後使用上並沒有什麼問題,直到近期Windows更新後發現,在轉換時會出現” The specified format is not supported in this culture”的錯誤訊息,研究後發現似乎與.NET 全球化API 和 ICU 有關。

C# 9.0

C# 9.0

隨著.NET 5.0的到來,微軟更新了C#的版本9.0,這邊簡單介紹一下C#9.0的內容,也讓自己在寫文章的同時熟悉過一次這些微軟所提供的新功能。

常見引發的 Memory Leaks 情境-以 .NET 為例

Commonly triggered Memory Leaks situations take .NET as an example

先前的篇章我們簡介了 C# .NET  中的垃圾回收機制,撰寫期間剛好簡訊相關的專案也出現了 Memory Leaks Bug……儘管垃圾回收機制為我們省下許多管理記憶體的心力,然而 GC 並不是萬靈丹,仍有許多程式的撰寫漏洞會造就 Memory Leaks,與時漸進,造成記憶體耗盡之後進而 Crash 整個程式。在今天的篇章中我們將介紹幾個常見 .NET 中造成 Memory Leaks 的原因。

初窺.NET C#中的 垃圾回收機制(二)

初窺.NET C#中的 垃圾回收機制(2)

在上篇我們主要對 C# 的記憶體分區及垃圾回收機制進行簡單的介紹,在這篇中我們將介紹 Mark-Sweep 演算法如何達成清理記憶體的目標。

 

無論任何垃圾回收演算法,皆需包含兩大部分:

  1. 必須能搜尋無相關參考的物件。
  2. 必須要能對占用空間的垃圾物件進行回收的動作。

Mark and Sweep 演算法也不例外,在此演算法中,第一部分稱為 Mark Phase,遍歷所有參考物件並標記哪些仍在使用、哪些沒有;第二部分則稱為 Sweep Phase,清除在上一步驟備標記為未使用的物件,釋放記憶體空間。