jvm 메모리

jvm 메모리

  • jvm에서 메모리 영역인 런타임 데이터 영역의 구조를 그림으로 그리면 다음과 같다.

  • 크게 3부분으로 나눠진다.
    1. 메소드 영역(클래스 영역)

    • 필드나 메서드의 메타데이터 저장
    • static 변수, 메소드 저장
    • 바이트 코드 저장
    • 상수 풀(Constant Pool)

    2. 스택 영역

    • Last In First Out(LIFO)
    • 메서드 호출 시마다 각각의 프레임 생성
    • 메서드 안에서 사용되어지는 값들을 저장
    • 호출된 메서드의 매개변수, 지역변수, 리턴 값 및 연산 시 일어나는 값들을 임시로 저장
      메서드 수행이 끝나면 프레임별로 삭제

    3. 힙 영역

    • new 연산자로 생성된 객체와 배열을 저장하는 공간
    • 클래스 영역에 로드된 클래스만 생성가능
    • GC를 통해 메모리 반환

jvm 이란

jvm 이란

jvm

  • 자바 가상 머신은 자바 바이트코드를 실행할 수 있는 주체이다.
  • 일반적으로 인터프리터나 JIT 컴파일 방식으로 다른 컴퓨터 위에서 바이트코드를 실행 할수 있도록 구현되나 자바 프로세서처럼 하드웨어와 소프트웨어를 혼합해 구현하는 경우도 있다.(이론적으로는 100% 하드웨어 구현도 가능하다. 하지만 비효율적이다)

종류

  • 오라클이 소유한 두 종류의 JVM으로 썬마이크로시스템즈에서 개발된 HotSpot 또 다른 하나는 BAE 시스템에서 개발된 JRockit가 있다.
  • 클린 룸 구현 에는 Kaffe
  • IBM사의 IBM_J9가 있다.
  • 대부분의 경우는 HotSpot을 사용한다.

mac maven install

mac maven 설치

  • http://maven.apache.org/download.cgi 에서 다운로드 받는다.

  • 압축을 적당한 곳에 풀다

lee-ui-MacBook-Air:bin wonwoo$ ./mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00)
Maven home: /Users/wonwoo/apache-maven-3.3.9
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre
Default locale: ko_KR, platform encoding: UTF-8
OS name: "mac os x", version: "10.11.3", arch: "x86_64", family: "mac"

maven 환경변수

  • 터미널 접속후 vi 통해서 아래와 같이 설정
vi ~/.bash_profile
  • 자신의 맞게 자바 경로와 maven 경로를 맞춰준다.
#path setting
export M2_HOME=/Users/wonwoo/apache-maven-3.3.9
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
  • 저장 후 설정 변경을 하기 위해 아래와 같이 명령어를 입력한다.
source ~/.bash_profile
  • PATH가 정상적으로 설정이 되었는지 확인한다.
echo $PATH
  • 환경변수가 맞게 설정 되었는지 확인한다.
mvn -version
  • 정상적으로 되었다면 아래와 같은 화면을 볼 수 있다.
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00)
Maven home: /Users/wonwoo/apache-maven-3.3.9
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre
Default locale: ko_KR, platform encoding: UTF-8
OS name: "mac os x", version: "10.11.3", arch: "x86_64", family: "mac"