2013년 9월 24일 화요일
JVM 메모리 구조
JVM의 메모리 구조
그러나 자바 프로그래밍에서는 스태틱, 스택, 힙영역에만 중점을 둔다.
스태틱 영역에는 클래스가 컴파일되어 올라간다. 스택영역에는 기본적으로 하나의 선입후출(FILO) 스택 구조를 가지는 영역이 준비되고, 이곳에서 기본 타입에 대한 연산과 메서드 블록 변수가 계산된다. 필요한 객체를 생성하여 사용하려면 객체를 위한 힙 영역이 필요하다. 힙의 한 부분에 존재하는 리터럴풀(literal pool)이라는 영역은 new 키워드를 사용하지 않는 문자열을 저장한다.
스태틱, 스택, 힙 영역의 차이점을 보자면, Car car = null; 이라 선언만 하고 프로그램 내에서 오랫동안 사용하지 않거나 메모리가 부족하면 Car클래스는 스태틱 영역에서 제거된다. 제거대상이 되면 JVM이 필요에 의해 제거한다. 클래스 제거는 가비지 컬렉션(Garbage Collection, GC : 쓰레기를 수집하고 정리)라고도 하며, 가비지 컬렉터가 이를 수행한다. 스태틱 영역은 블록 변수를 처리하므로 수명이 가장 짧다. 메서드가 끝나면 메서드 내의 블록 변수는 모두 제거된다. 객체는 생성된 다음 힙 영역의 멤버 필드를 보관한다. Car car1 = null; 하면 객체는 살아있으나. 레퍼런스는 잃게 된다. 이런 것이 가지비이며, 가비지 컬렉터가 판단하여 가비지를 제거한다.
* static 메서드는 static 필드를 사용하지만 멤버 필드는 사용할 수 없다. 그러나 멤버 메서드는 static 필드를 사용할 수 있다.
2013년 9월 3일 화요일
SVN (Software Version Control System) 버전 관리 시스템
SVN (Software Version Control System) 버전 관리 시스템
기본적으로 Server-Client구조
기본적으로 Server-Client구조
리소스를 관리하고 업무 프로세스를 진행하는 두가지 모델
1. Lock-Modify-Unlock 모델
: 한명의 사용자가 파일을 열어 작업하고 있다면, 다른 사용자들은 해당 파일을 수정/저장 할 수 없게 함으로써, 하나의 작업물을 동시에 둘 이상의 사용자가 수정-commit하는 것을 방지한다. 수정 또한 작성한 본인만이 가능.
2. Copy-Modify-Merge 모델
: 통합 중심 버전 관리 기법. 모든 사용자가 하나의 작업물을 동시에 편집 가능하다.
용어
1. Revision : 작업물에 대한 고유 번호.저장소에 등록 할 때마다 등록 시점에 대한 고유 번호를 지정.
2. check-out : repository에서 파일 복사본들을 꺼내어 작업본안에 집어넣는 것.
3. export : repository에 있는 파일들의 한 snapshot
4. commit : 변경한 것들을 repository에 다시 집어 넣는 것.
5. trunk : 개발의 주된 흐름
6. branch : trunk에서 하나의 가지(branch)를 만들어 릴리즈를 준비하는 것..
7. Conflict : 동시에 같은 파일을 두 명 이상의 사용자가 수정하고 각각 커밋할 경우 해당 파일은 충돌이 일어나고, 충돌된 파일의 내용을 merge하거나, 두 파일중 하나를 최신으로 지정하여 충돌 상태를 해결해야 한다.
8. Merge : 작업 복사본과 저장소에 있는 파일의 내용이 다를 경우, 병합 작업을 통하여 두 파일의 내용을 합치게 된다.
형상관리(Configuration Management , CM)
버전관리가 곧 형상관리인 것은 아니다. 버젼 관리는 형상 관리에 쓰이는 하나의 도구일 뿐이다.
피드 구독하기:
글 (Atom)