Java
자바 변수를 메모리 관점에서 뜯어보기
메모리 JVM에서 메모리는 크게 3가지 영역으로 나누어 집니다. '아래 그림은 많이 보셨을 건데요, 자바에서 지역변수와 참조변수를 사용하게 되면 각각의 메모리 영역 어느 부분에 할당이 되는지, 어떻게 사용이 되는지에 대해 지금부터 살펴보도록 하겠습니다. 메모리 영역에 대해 살펴보기 이전에, 변수에 대해 먼저 보도록 하겠습니다. 자바의 변수는 크게 클래스 변수, 인스턴스 변수, 지역변수, 매게변수로 나뉩니다. 클래스 변수 - 클래스 영역에서 타입 앞에 static이 붙은 변수를 뜻합니다. 하나의 클래스를 통해 많은 객체가 생성 될 수 있는데, 해당 객체 모두가 공유하는 변수입니다. 인스턴스 변수 - 클래스 영역에서 static이 붙어 있지 않은 변수입니다. 객체마다 개별적인 값을 지닐 수 있습니다. 지역 ..
가비지 컬렉션에 대해
Garbage Collection(가비지 컬렉션) 가비지 컬렉션이란 메모리 관리 기법중에 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 중 필요없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스를 뜻합니다. 다른 언어 같은 경우는 프로그래머가 수동으로 메모리 할당 및 해제를 해줘야 했지만 Java에선 가비지 컬렉터가 메모리 관리를 대신해주기 때문에 개발자 입장에서 메모리 누수 문제에 대해 관리하지 않고 개발에만 오롯이 집중할 수 있는 장점이 있습니다. 참고로 가비지 컬렉터 개념은 자바에만 있는 개념은 아닙니다. 파이썬, 자바스크립트 및 브라우저 역시 자체적인 가비지 컬렉션이 구현되어 있기 때문에, 메모리 관리 없이 웹페이지를 만들 수 있습니다. 가비지 컬렉션 대상 가비지 컬렉션은 어떤 ..
객체지향 프로그래밍이란?
객체지향 프로그래밍(OOP - Object Oriented Programming) 객체 지향 프로그래밍은 인간 중심적 프로그래밍 패러다임입니다. 객체는 우리가 일상생활을 하며 인식할 수 있는 모든 사물이라 할 수 있습니다. 다시 말하자면 객체 지향 프로그래밍이란 실제 사물을 프로그래밍으로 옮겨와 모델링 하는 것으로 이해하시면 됩니다. 인간이 보는 사물(Object)는 사실 속성(Variable)과 행위(Method)로 구성되어 있습니다. 이러한 사물, 즉 객체를 만드는 설계도가 클래스(Class) 입니다. 자바를 예로 들자면 public class Person { string height; public void walk() { Sytem.out.println("앞으로 걸어갑니다.") } { Person이..
Java - ArrayList와 LinkedList
- Array(배열) 1. 초기 길이를 지정해야 한다. 2. 생성된 배열의 길이를 동적으로 변경하지 못한다. - ArrayList 1. 내부적으로 배열의 형태를 지니고 있다. 2. 추가적으로 데이터를 삽입 또는 삭제하기 위해서 새로운 임시 배열을 생성하여 데이터를 복사하는 방법을 쓴다. * 만약 새로운 값을 추가하려고 할 때, List의 크기가 생성되어 있는 배열의 size(생성시 따로 설정하지 않았다면 size = 10인 배열이 생성된다)보다 커지게 되면, 이전 크기의 2배가 되는 배열을 생성해 배열 전체를 복사하여 새로운 배열에 복사하고 제일 뒤에 값을 추가해야 한다. 3. 데이터 검색은 o(1)의 시간복잡도를 지니지만, 추가와 삭제에는 o(n)의 시간복잡도를 지닌다. -> 대량의 자료를 추가/삭제하..