직렬화 Serialization
데이터 직렬화란
- 직렬화의 개념을 검색해보면 보통은 메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 방식으로 변환하는 것이라고 서술한다
- 나에게는 선뜻 와닿지 않는 설명이다
직렬화의 이유
- 데이터 메모리 구조는 크게 2가지로 분류한다
값 형식 데이터 Value Type
- int, float, char, …
- 스택에 저장되는 데이터이며, 직접 접근이 가능하다
참조 형식 데이터 Reference Type
- 포인터 변수 등
-
힙에 할당되는 데이터이며, 실제 값이 아닌 참조 대상의 주소값이 저장되어 있다
- 그리고 디스크에 저장 및 네트워크 통신을 위한 데이터는 값 형식 데이터로만 사용할 수 있다
참조 데이터는 왜 사용이 불가능한가?
- 상기했듯이, 참조 형식 데이터는 실제 사용할 값이 아닌 주소값을 가지고 있다
- 데이터 주소값은 프로그램의 실행과 종료 및 PC 환경 마다 모두 다르게 재정의된다
- 때문에 주소값을 실제 값 데이터로 변환해주는 작업이 필요하고, 이것이 직렬화 작업이다
- 다시 말해, 파싱 가능한 유의미한 데이터로 변환해주는 작업이라고 할 수 있다
- 직렬화된 데이터를 다시 사용할 환경에서 메모리 상에 옮기면서 주소값을 재정희 하는 작업이 역직렬화 Deserialization이다
출처
- https://hub1234.tistory.com/m/26