본문 바로가기

프로그래밍과 자료구조3

[프로그래밍] JVM의 Garbage Collection 자바를 사용하는 입장에 있어서 Garbage Collection(이하 GC)는 몰라서는 안될 개념이라고 생각한다. C 계열 언어를 전문적으로 써본 적은 없어서 잘 모르겠지만, 메모리 관리를 프로그래머가 직접 메모리에 접근해 불필요한 자원을 해제 해줘야하는 불편함이 있다. 하지만 자바는 굳이 직접 프로그래머가 하지 않는데 이 이유는 GC가 존재하기 때문이다. 정의를 보자면, 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. 영어를 그대로 읽어 가비지 컬렉션이라 부르기도 한다. 1959년 무렵 리스프의 문제를 해결하기 위해 존 매카시가 개발하였다. 정의를 보면 알겠지만 GC는 자바에서 최초 적용된 것이 아니라 LISP에서 최초로 적용되었다.. 2020. 10. 23.
[프로그래밍] TDD - Test Driven Development 프로젝트를 개발할 때, 여러가지 개발 방법론이 있다. 에자일, 폭포수, TDD 등등... 요즘은 TDD 방법론을 많이 쓴다고 들었다. 나도 인프런을 통해서 스프링 부트 강의를 들을 때, 기능을 하나 개발하고, 테스트 코드를 작성, 테스트를 수행하는 구조의 과정이 있었는데 지금와서 생각해보니 딱 TDD.... 왜 테스트 주도 개발이 나왔냐고 하니, 소프트웨어 개발은 너무 유동적이고, 요구 사항 또한 계속 바뀌고, 프로젝트 자체가 하나의 거대한 작업이 되어버리면서 소프트웨어 위기(Software Crisis)에 봉착하는 경우가 많다고 한다. TDD(Test Driven Development) - 테스트 주도 개발은 3가지 과정이 담겨 있고, 이 과정은 짧은 사이클을 반복하면서 나아간다. 먼저 어떤 기능에 대.. 2020. 9. 18.
[프로그래밍] JVM 의 구조 자바를 이용하고 쓰고 있는데도, 아직 자바 가상머신에 대한 제대로된 이해가 없었다. 이번에 한 번 알아보려고 한다. JVM - Java Virtual Machine 자바 가상 머신의 위키백과 정의를 먼저 보자. 자바 가상 머신(영어: Java Virtual Machine, JVM)은 자바 바이트코드를 실행할 수 있는 주체이다. 자바 바이트코드는 플랫폼에 독립적이며 모든 자바 가상 머신은 자바 가상 머신 규격에 정의된 대로 자바 바이트코드를 실행한다. 따라서 표준 자바 API까지 동일한 동작을 하도록 구현한 상태에서는 이론적으로 모든 자바 프로그램은 CPU나 운영 체제의 종류와 무관하게 동일하게 동작할 것을 보장한다. 자바 가상 머신은 CPU와 운영체제에 상관 없이 같게 동작하도록 하는 주체라고 한다. 자.. 2020. 9. 17.