직렬화란?

천용·2023년 6월 15일
0

자습

목록 보기
8/12

직렬화(serialization)란?

  • 메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식(값)으로 변환하는 것
  • 반대로 역직렬화(desrialization)는 디스크에 저장한 데이터를 읽거나 네트워크 통신으로 받은 데이터를 메모리에 사용 할 수 있도록 변환한 것이다.

데이터들의 메모리 구조는 크게 2가지이다.
1. 값 형식의 데이터(Value): int, char, double 등 선언할 때 사용하는 데이터들이며 스택에 메모리가 쌓이고 직접 접근이 가능하다.

2. 참조 형식의 데이터(Reference): 포인터와 같이 주소값을 참조하는 변수를 말한다. 참조형식의 데이터를 선언하면 힙에 메모리가 할당되고 스택에서는 메모리를 참조(힙에서 스택주소값을 갖고 있다.)하는 구조로 되어있다.

디스크에 저장하거나 통신에 사용하는 경우에는 값 형식의 데이터만 가능한데, 참조형식은 실제 값이 아닌 주소값을 가지고 있기에 디스크나 통신에 사용할 수 없는 것이다.
참조형을 사용하게 된다면 통신은 pc마다 메모리 주소가 달라서 적용할 수가 없는 것이다. 직렬화를 하게 되면 주소 값이 가지는 데이터들을 값 형식으로 변환해준다. 그렇기 때문에 데이터를 저장하거나 통신하기 전에는 데이터직렬화 작업이 필수적이다.
직렬화를 쓰는 이유는 사용하고 있는 데이터들을 파일 저장 혹은 데이터 통신에서 파싱 할 수 있는 유의미한 데이터를 만들기 위함이다.

profile
성장하는 개발자가 되자

0개의 댓글