Kotlin & Java
매개변수를 통해 JVM 메모리 할당과 회수 전략에 대해서 알아보자!
1. 대상- JVM (자바가상머신) 에서는 어떻게 메모리를 할당하고 회수하는지 직접 눈으로 확인하고 싶은 사람- 가상머신 매개변수를 사용해서 테스트 해보고 싶은 사람- 기본적인 GC 관련된 키워드는 알고있는 사람 (ex. Old Generation, ….)- 미래의 나 2. 개요 최근 회사에서 싱글코어로 배포되어 있던 서버의 코어수를 증량하면서 SerialGC -> G1GC 를 사용하게 되었다. 그에 따라 메모리 회수가 잘 이루어지는지 모니터링을 하고 있는데 각자의 공간에 메모리가 어떻게 할당되고 회수를 하는지 직접 확인하고 싶어졌다. 마침 최근 읽고 있는 JVM 밑바닥 까지 파헤치기 라는 책에서 다루고 있어 정리하고 복기할겸 글로 남기는 것이 의미있을 것 같았다. 따라서 이번 글에서는 가장 기본적인 ..
생성자보다 정적 팩터리 메서드를 고려해보자
최근 NEXTSTEP 에서 주관하는 TDD, 클린코드 with Kotlin 5기 과정을 들으면서 어떻게 인스 턴스를 생성할지의 대한 고민을 많이 했다. 리뷰어들 마다의 생각도 다르고 각각의 상황도 달라 최대한 다양한 방법을 사용해보려고 노력했던 것 같다 😊 생성자 대신 팩토리 함수를 사용하라 생성자의 주된 임무는 제공된 인자를 사용해서 캡슐화된 프로퍼티를 초기화하는 것이다. 메서드의 수가 많을 수록 단일 책임 원칙 (SRP) 을 위반하지만 생성자의 수가 많아질 수록 클라이언트가 클래스를 더 유연하게 사용할 수 있다. 인스턴스를 만드는 방법중에는 팩토리 함수를 사용하는 방법도 존재한다. 이펙티브 코틀린, 이펙티브 자바에서는 생성자 대신 팩토리 함수를 사용하라 라고 말하고 있다. 관련해서 책에서 말하고 있는..
# c++과 Java의 닮은 점과 차이점은 무엇일까?
면접에서 가장 많이 나오는 빈도 높은 질문은 단연 이 질문이 아닐까 싶다.... 객체지향, 절차지향과 같은 단순한 점들만 알고 있었는데 좀 더 자세하고 구체적인 것들을 나열해 보겠다. - Java는 typedef, enum, defined 또는 preprocessor를 지원하지 않는다. - Java는 클래스를 지원하지만 구조체와 유니온은 지원하지 않는다. - 모든 c++ 프로그램은 main 함수가 필요하다. - 모든 자바 클래스는 Object 클래스를 상속해야 합니다. - Java에서 선언하는 모든 함수 혹은 메소드는 클래스 선언 내에 포함된다. - C++과 Java 모두 클래스의 객체를 인스턴스화 하지 않아도 호출할 수 있는 클래스 메소드나 함수를 지원한다. - Java에서 'interface' 키워드..
Kotlin 설치 및 실습 환경 구축하기
- 자바 JDK 설치하기 OpenJDK인 Zulu를 설치한다. 코틀린은 JDK SE 9 까지 지원하지만 안정적인 동작을 위해 Zulu의 JDK SE 8을 설치한다. 1. https://www.zul.com/downloads/zulu/ 링크에서 msi 파일을 다운로드 한다. 불러오는 중입니다... 2. 다운로드한 설치파일 zulu8.xx.msi를 실행하면 설치가 진행된다. 이때 next 버튼을 한번 눌러 나오는 화면에서 JDK가 설치되는 경로를 꼭 확인한다. 만약 JDK를 설치한 적이 있다면 이전 버전을 삭제하고 진행한다. 3. 윈도우 운영체제의 경우 윈도우 환경 변수인 PATH에 JDK가 설치된 위치를 등록해야 한다. 4. JAVA_HOME에 Zulu 경로를 등록하고 path에 %JAVA_HOME%\bi..
안드로이드 apk 파일 만들기
1) 안드로이드 폰 개발자 옵션 설정 2) 개발환경 바꾸기. 3) 해상도 바꾸기 - 1280X720 4) 5) Edit > Project Settings.. > Player 6) 세로모드로 고정하기