[c#] C# 직렬화와 메모리 관리

C#에서는 데이터를 파일에 저장하거나 네트워크를 통해 전송하기 위해 직렬화(Serialization)가 필요합니다. 직렬화는 객체를 바이트 스트림으로 변환하는 과정을 말하며, 역직렬화는 바이트 스트림을 다시 객체로 변환하는 과정을 말합니다.

직렬화

C#에서는 BinaryFormatterXMLSerializer 등의 클래스를 사용하여 직렬화를 수행할 수 있습니다.

BinaryFormatter를 사용한 직렬화 예시

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "John", Age = 30 };

        BinaryFormatter formatter = new BinaryFormatter();
        MemoryStream stream = new MemoryStream();
        formatter.Serialize(stream, person);

        byte[] data = stream.ToArray();
        // Save or transmit the data...
    }
}

메모리 관리

직렬화와 관련하여 메모리를 효율적으로 관리해야 합니다. 대량의 데이터를 직렬화할 경우 메모리 부족으로 인한 애플리케이션 성능 저하가 발생할 수 있습니다. 이를 방지하기 위해 메모리 스트림(MemoryStream)을 활용하여 메모리를 효율적으로 관리할 수 있습니다.

MemoryStream를 사용한 메모리 관리 예시

MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, data);
// Use the serialized data...

// Dispose the stream to release memory
stream.Dispose();

직렬화와 메모리 관리는 C# 애플리케이션의 안정성과 성능에 중요한 영향을 미치므로 주의 깊게 다루어져야 합니다.

참고 자료