Free Lines Arrow
본문 바로가기
728x90

Language38

[Java] Garbage Collector Garbage Collector란? 메모리를 해제 하는 역할 을 한다. 줄여서 GC 라고 한다. C/C++ 에서는 사용자가 직접 해제를 해줘야한다. 하지만 자바에서는 GC가 자동으로 관리를 해준다. Garbage Collection 동작원리 GC 동작은 Young generation 과 Old generation 영역에서 발생한다. Young generation 과 Old generation 은Heap에 존재한다. STW(Stop-The-World): GC를 실행하기 위해 어플리케이션을 멈추는 것을 말한다. - GC 튜닝은 STW 시간을 줄이는 것이다. JVM memory 의 구조 Young generation 영역 Eden, Survior1, Survior2 영역으로 나뉜다. Eden: 최초 객체가 생.. 2021. 8. 24.
[Java] Null 안전하게 다루기 Null 이란? 미확인 값 또는 값이 할당 되지 않는 상태를 표현한다. int 형은 0 을 기본 값으로 가진다. 하지만 참조타입은 기본값으로 null 을 갖는다. Null은 왜 문제가 될까? Null의 아버지 토니 호어가 이를 두고 'The Billion Dollar Mistake(10억 달러짜리 실수)'라고 할 정도다 널 참조를 허용했는데 이 때문에 수십 년 동안 일어난 문제가 'billion dollar' 수준으로 손해가 될 만큼 엄청나다는 것을 표현했다. 기본으로 null 을 쓰지말자 함수를 사용하는 쪽에서 null 값이 왔는지 제대로 체크하지 않고 값을 쓰면 오류가 터진다. 프로그래머가 아닌 사용자도 잘 쓰던 프로그램이 갑자기 오류를 토해내면서 다운되는 바람에 작업을 날려먹는 일이 있을 텐데 오류.. 2021. 8. 24.
[Java] 직렬화, 역직렬화 Serialization 직렬화란 객체를 데이터 스트림으로 만드는 것을 말한다. 역직렬화란 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 말한다. 객체를 바이트로 만들어 저장 하고 바이트로된 데이터를 읽어서 객체로 만든다. 왜 필요할까? 객체를 따로 저장했다가 읽을때 사용한다. 네트웍을 통해 컴퓨터 간에 서로 객체를 주고 받을때 사용한다. serialVersionUID serialVersionUID 를 쓰는경우를 많이 봐왔다. 선언하지 않으면 자동으로 생성된다. 사용이유 역직렬화 를 할때 serialVersionUID 가 일치하는지 검사를 하기 때문이다. 클래스가 변경 되었을때 버전 정보를 보고 맞추기 때문이다. static final long serialVersionUID = 2L; 객체 직렬화 구.. 2021. 8. 23.
[Java] java8 에 추가된 기능 Lambda https://vprog1215.tistory.com/147 [Java] Lambda Lambda란? 람다는 람다 대수(lambda calculus)에서 유래한다. 람다 대수에서 람다식(lambda expression)은 수학의 함수를 단순하게 표현하는 방법이다. 이름 없는 함수(익명함수), 람다식(lambda express.. vprog1215.tistory.com Stream API https://vprog1215.tistory.com/188 [Java] Stream API Stream API 스트림은 API는 데이터를 추상화하여 다룬다. 다양한 방식으로 저장된 데이터를 읽고 쓰기 위한 공통된 방법을 제공한다. 배열, 컬렉션, 파일에 저장된 데이터 모두 같은 방법으로 다룰 vprog121.. 2021. 8. 23.
728x90
반응형