basic/java 이론

day 10 - jvm 메모리 구조, 메서드 인자 전달 방식, 메서드 오버로딩

못지(Motji) 2021. 5. 4. 16:58

jvm 메모리 구조

method Area(Class Area)

  • static이 붙어있는 것들의 영역
  • 프로그램 실행시 먼저 생성되어 프로그램 종료까지 남아있음

Call stack

  • 현재 실행중인 메서드들이 차지하는 메모리 영역, 지역변수 또한..
  • 스택을 여러개로 구성해서 사용가능 > multi thread, single thread(일꾼)

Heap

  • new로 생성되는 것들의 영역

Native

  • c / c++과 연동하는 작업을함
  • 명령어 중 native 키워드가 붙어있는 것들을 사용할때 사용되는 메모리영역

메서드 인자 정달 방식

자바의 인자 전달 방식 (argument passing)은 "값의 의한 호출 : Call-by-value"이다

호출하는 실제 인자의 값이 복사되어 메서드의 파라미터에게 전달된다.

  1. 기본형값 전달
    • read only
    • 값만 복사해줌
    • 원본회손 없음
  2. 참조형값 전달
    • read & write
    • 객체의 레퍼런스(주소값)이 복사되어 전달

재귀 호출 (recursive call)

메서드 안에서 자기자신인 메서드를 다시 호출하는것을 말함

반복문으로 바꿀 수 있고, 반복문보다 재귀가 성능이 더 좋다

코드는 간결하나, 이해하기 어렵다

메서드 오버로딩 (method overloading)

한 클래스 안에, 이름이 같지만 매개변수의 타입이나 개수가 서로 다른 여러개의 메서드를 중복작성 가능하게 해주는 문법중의 하나.

자바 다형성의 한경우

조건

  • 메서드 이름이 동일해야함
  • 매개변수의 개수나 데이타입이 서로 달라야함
  • ❗주의
    • 매개변수의 이름이 다른것은 조건에 해당안됨
    • 리턴타입은 오버로딩 조건에 해당 안됨