반응형

Java 5

가비지 콜렉션 (Java 가상 머신의 메모리 영역)

흔히 '가비지 컬렉션'이라고 하는데, java 가상 머신에서 메모리를 어떻게 관리하는지 궁금하신 분들이 있으실 겁니다. 요약을 하자면 아래 이미지와 같이 메소드, 스택, 힙 영역으로 나누어서 메모리를 쌓아둡니다. 특히나 힙 영역에는 인스턴스 메모리를 저장해두는데 자바 가상 머신은 힙 영역을 관찰하고 있다가, 인스턴스를 참조하고 있는 변수들이 사라지면 가비지 컬렉션에 대상이 됩니다. 1. 자바 가상머신의 메모리 영역 1-1. 메소드 영역 : 메소드의 바이트 코드, static 변수 메소드 영역은 메소드의 바이트 코드들이 쌓입니다. 자바 응용프로그램에서 main 메소드의 호출에서부터 시작을해서 지속적으로 다른 메소드들의 호출이 이루어지면서 프로그램이 진행된다. 즉, 메소드의 바이트코드는 프로그램의 전체 흐름..

Java 2022.11.09

Gson Expose 어노테이션

Android의 Retrofit2를 사용하면, gson을 이용해서, java나 kotlin을 Parsing 합니다. 저는 현재 이직을 한지, 얼마 되지 않았습니다. 그래서, 전임자 개발자 분이 작성해 놓은 소스코드를 수정 하고 있습니다. 그런데 서버로 부터, 데이터를 읽어오는 시점에서, 분명 URL도 잘 받아오고, Reponse 상태도 200 코드로 잘 받아오는 것을 디버깅을 통해서 확인 했습니다. 하지만, json 데이터가 Java 데이터로 제대로 매핑이 되어들어오지 않고, null이나, 0으로 데이터가 매핑이 되었습니다. 분명 Field 값도 잘 확인 하였고, 모두 맞았습니다. 에러도 떨어지지 않는 상황에서, 그렇게 삽질은 시작 되었습니다..." 결국 찾았습니다... 문제는, 제가 잘 사용하지 않았던..

Java 2021.01.05

상속과 다형성 3(Program to interface)

1. 인터페이스에 대고 프로그래밍 하기(Program to interface) 객체 지향의 유명한 규칙 중 다음과 같은 규칙이 있습니다. "인터페이스에 대고 프로그래밍 하기(program to interface)" 즉, 이 말은 실제 구현을 제공하는 콘크르티 클래스(구현 클래스)를 사용해서 프로그래밍 하지 말고, 기능을 정의한 인터페이스를 사용해서 프로그래밍하라는 뜻 입니다. 그런데, 인터페이스는 최초 설계에서 바로 도출되기 보다는, 요구 사항의 변화와 함께 점진적으로 도출이 됩니다. 상속과 다형성 2(추상 타입을 이용한 구현 교체의 유연함) 상속과 다형성 1 객체 지향이 주는 장점은 구현 변경의 유연함 입니다. 객체는 캡슐화를 통해서 객체를 사용하는 다른 코드에 영향을 최소화 하면서 객체의 내부 구현을..

Java 2020.11.07

상속과 다형성 2(추상 타입을 이용한 구현 교체의 유연함)

상속과 다형성 1 객체 지향이 주는 장점은 구현 변경의 유연함 입니다. 객체는 캡슐화를 통해서 객체를 사용하는 다른 코드에 영향을 최소화 하면서 객체의 내부 구현을 변경할 수 있는 유연함을 얻을 수 있습니 coding-food-court.tistory.com 1. 추상 타입을 이용한 구현 교체의 유연함 public class FlowController { public void process() { FileDataReader reader = new FileDataReader(); byte[] data = reader.read(); Encryptor encryptor = new Encryptor(); byte[] encryptedData = encryptor.encrypt(data); FileDataWrit..

Java 2020.11.05

상속과 다형성 1

객체 지향이 주는 장점은 구현 변경의 유연함 입니다. 객체는 캡슐화를 통해서 객체를 사용하는 다른 코드에 영향을 최소화 하면서 객체의 내부 구현을 변경할 수 있는 유연함을 얻을 수 있습니다. 유연함을 얻을 수 있도록 해주는 또 다른 방법은 추상화에 있습니다. 추상화를 가능하게 해주는 다형성에 대해서 알아보겠습니다. 1. 다형성(Polymorphism) 다형성(Polymorphism)은 한 객체가 여러 가지(poly) 모습(morph)을 갖는다는 것을 의미 합니다. 여기서 모습은 타입을 의미 합니다. 따라서, 다형성이란 한 객체가 여러 타입을 가질 수 있다는 것을 의미 합니다. 여기서, 객체를 타입A로도 사용할 수 있고, 타입B로도 사용할 수 있고, 타입C로도 사용할 수 있습니다. 타입 상속은 크게 인터페..

Java 2020.11.04
반응형