short a[] = new short[6]; //short 덩어리 6개를 연속해서 만듦
int[] b = new int[3]; //int 덩어리 3개를 연속해서 만듦
Reference
System.identityHashCode() : 메모리 상에 존재하는 객체의 hash code 값을 반환
public class Main{
static void print(int[] a){
for(int i = 0; i < 5; i++){
System.out.println(a[i] + ",");
}System.out.println();
}
//System.identityHashCode
//: 메모리 상에 존재하는 개체의 hash code 값 반환
//메모리 상에서 위치 값을 가지고 있는 개체에 대한 hash code 값은
//유일한 값이기에 메모리 주소값처럼 생각하면됨
public static void main(String[] args){
int[] a = null;
System.out.println("address a = " + System.identityHashCode(a));
a = new int[5];
System.out.println("address a = " + System.identityHashCode(a));
print(a);
int[] b = null;
b = a;
System.out.println("address b = " + System.identityHashCode(b));
for(int i = 0; i < 5; i++){
b[i] = i * 10;
}print(a);
}
}
Memory
프로그램은 '메모리'에 공간을 만들어서 시작하고, 그 공간을 없애면서 끝이 난다.
1. Stack area 스택 영역
- 함수를 구성하다보면 함수 내에서 수많은 변수를 생성하게 된다.
- 인자, 지역변수, 반환변수 등.
- 이 영역의 특성은 일시적임
- 즉, 공간의 생성도 시스템이 알아서 만들어내고, 함수의 실행이 종료되면 해당 공간도 바로 없어져 버림
- 휘발성이 강한 영역이기때문에 해당 영역의 크기가 크지 않음
- 시스템 설정에서 Stack Area보다 크게 설정할 수 있지만, 최대치도 크지 않음을 인지해야 함
- 만약, 설정된 크기 이상의 메모리를 할당하려 한다면, 에러인 Stack Overflow가 발생함
- 이것은 할당된 양이 흘러넘쳐 'Heap area'를 침범한 것임
- 함수가 호출될 때 시스템에 의해 생성되고 -> 함수가 종료될 때 시스템에 의해 해제됨
2. Heap area 메모리에서 가장 많은 영역을 차지하는 공간
- 보통 '동적 할당' 이라고 말을 하는데, 이때 사용되는 메모리 영역임
- 사용자에 의해 아주 많은 공간이 필요하다고 판단되는 경우, Heap Area에 공간을 동적으로 할당하여서 사용하게 됨
- 사용자가 할당하였기 때문에, 사용자가 해제시켜야 하는 것이 원칙이지만,
- java에서는 사용되지 않는 메모리의 영역을 알아서 해제시켜주는 기능이 존재함
- 'new' 연산자를 통해 동적으로 메모리에 공간을 할당할 수 있는데,
- 일정한 로직에 의해 System.gc() 함수, 가비지 컬렉션 함수 등을 통해 시스템이 알아서 해제시키도록 처리함
- Heap area도 역시나 할당 공간이 부족하여 흘러 넘치게 되면,
- Heap Overflow 에러가 발생함
- 임의의 시점에 개발자에 의해 생성되고 -> Idle 시점에 시스템에 의해 해제됨
3. Static / Data Area 스태틱 or 데이터 영역
- 정적변수 (Static variable), 전역 변수(Global variable)로 구성된 변수들이 생성되는 공간
- 개발자에 의해 만들어지고 ㅅ라지고 하는 동적 움직임이 없는 정적인 영역
- 프로그램이 실행될때 시스템에 의해 공간이 할당되고, 프로그램이 종료될 때 시스템이 본인이 만든 공간을 해제시킴
- 공간이 만들어진 이후 끝날 때까지 해당 공간은 가만히 유지되는것
- 이 공간 역시도 적당한 수준에서 제한적으로 사용하는 것이 좋음
- 프로그램이 시작 될때 시스템에 의해 생성되고 -> 프로그램이 종료될 때 시스템에 의해 해제됨
'Study > JAVA' 카테고리의 다른 글
bit operator (0) | 2021.02.16 |
---|---|
2-D Array (0) | 2021.02.16 |
1 - D Array (0) | 2021.02.15 |
Array(2) (0) | 2021.02.15 |
OkHttp (0) | 2020.12.24 |