본문 바로가기

프로그래밍/Java10

[Java | 자바] Java의 메모리 관리 1. 일반적인 메모리 관리 - Java 가비지 플랫폼은 자도으로 사용했던 메모리를 해제하는 가비지 컬렉션(Garbage Collection) 기능을 수행한다. - 프로그래머가 직접 메모리 관리를 하는 경우에 생길 수 있는 문제점 => 할당된 메모리 영역 초과 : Java 언어는 참조현 변수들에 대한 산술 연산을 금지시킴으로써 C언어의 포인터로 인해 발생되었던 메로리 초과 문제를 최소화 => 메모리 부족 : 프로그래머가 크기가 작은 메로리의 생성, 해제를 자주 반복할 경우, 실제 남아 있는 메모리는 충분하지만 연속적인 메로리 공간의 확보가 어렵게 되어 시스템에서 '메모리 부족' 에러가 발생 => 메모리 영역을 벗어남 : 객체를 생성하여 메모리 할당을 받았지만, 이를 해제하는 것에 대해서 고려하지 않은 채 .. 2017. 4. 12.
[Java | 자바] JVM의 메모리 구조 JVM의 메모리 구조 1. 메소드 영역(Method Area)프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*.class) 을 읽어서 분석하여 클래스에 대한 정보(클래스 데이터)를 Method Area에 저장한다. 이 때, 그 클래스의 클래스 변수 Class variable도 이 영역에 함께 생성된다. 2. 호출 스택(Call Stack 또는 Execution Stack) 호출 스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서드가 호출되면, 호출 스택에 호출된 메서드를 위한 메모리가 할당되며, 메서드가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 연산의 중간 결과 등을 저장하는 데 사용된다. 그리고 메서드가 작업을 마치게 되면, 할당되었던 메모리 공간은 반.. 2017. 4. 12.
[Java | 자바] 접근제어자 public/protected/default/private *이 글은 https://wikidocs.net/232를 참고하여 작성하였습니다. 접근제어자(Access Modifier) 클래스 내에서 변수나 메소드의 접근을 제한하는 역할을 하는 것을 접근제어자라고 한다.자바에는 4개의 접근제어자(public/protected/default/private)가 있다. 허용범위 public > protected > default > private public 어떠한 클래스가 접근하든 모두 접근이 가능하다.protected 상속받은 클래스 또는 같은 패키지에서만 접근이 가능하다.default 접근제한자가 선언되어 있지 않다면 default이다. 자신 클래스 내부와 같은 패키지 내에서만 접근이 가능하다.private 모든 접근을 허용한다. 어떠한 클래스가 접근을 하든 모두 .. 2015. 7. 12.
[Java | 자바] 유용한 API(2) - SimpleDateFormat *이 글은 자바의 정석(남궁성 지음)을 참고하여 작성하였습니다. SimpleDateFormat이란? Date와 Calendar를 사용하여 계산한 날짜를 다양한 방법으로 출력하는 클래스.원하는 출력형식의 패턴을 작성하여 SimpleDateFormat인스턴스를 생성한 다음, 출력하고자 하는 Date인스턴스를 가지고 format(Date d)를 호출하면 지정한 출력형식에 맞게 변환된 문자열을 얻을 수 있다. Date today = new Date();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); //오늘 날짜를 yyyy-MM-dd형태로 변환하여 반환한다.String result = df.format(today); [표1] SimplaDateFormat의.. 2015. 5. 10.