[Day3] JVM (Java Virtual Machine)의 메모리

JVM (Java Virtual Machine)의 메모리

(1) 스택 영역 (Runtime Stack) : 실행시 사용하는 메모리 영역

(2) 힙 영역 (Garbage Collection Heap) : 동적 메모리 할당 영역

(3) 상수 영역 (Constant & Code Segment) : 상수 데이터 및 static 데이터 할당 영역

(4) 레지스터 영역 (Process Register) : 프로세서 실행 관련 메모리 할당 영역


======================================================================

자바의 메모리 구조

: OS에 의하여 프로그램이 수행되면 JVM은 OS로부터 적절한 크기의 메모리 공간을 얻어내게 된다.
그리고 얻어낸 메모리 공간을 JVM은 3영역으로 나누어 관리한다.

메소드(method area) 영역 : 매개변수, 지역변수
      (메소드의 실행이 종료되면 자동반환)
      
스택(Stack) : 매개변수, 지역변수
   (메소드의 실행이 종료되면 자동반환)
   
힙(Heap) : 클래스객체, 배열객체, 문자열객체
   (new 연산자 사용, 객체가 사용하는 메모리공간)
   

java.lang -> system ->

======================================================================

class란? User Data Type
 - 멤버변수 : 전역변수 (값 전달)
 - 필드 : 상수
 - 생성자 : 멤버변수 초기화 및 객체 초기화
 - 메소드 : 멤버들을 이용해서 명령을 수행하는 단위 ex) println
 
======================================================================

메소드의 종류 : static, non-static (내일)
메소드의 원형 : void, return형

======================================================================

1. static void형

  [형식] - main
    접근제한자 static void userName(매개인자) {
     명령;
   }

  [사용방법]
   userName(매개인자값...);
  
2. static return 형
    리턴하는 값의 데이타 형을 기재한다.

   [형식]
    접근 제한자 static dataType userName(매개인자) {
    명령;
   return dataType 값;
   }

   [사용방법]
     user  
  
  
  

// C(Create)R(Reuse)U(Update)D(Delete)를 모두 만족해야 참조관계

package com.exam;

// import com.test.*; // com.test 밑에 있는 모든 클래스를 참조
import com.test02.MY; // com.test 밑에 있는 MY 클래스를 참조, 이것만 쓸거면 이것만 import 하는게 좋음 (메모리 문제)

public class Test {

 public static void main(String[] args) {
  
  MY.Disp();
  MY.Prn();
  
  com.test02.MY.Disp(); // import 하지 않아도 이렇게 입력하면 불러오기 가능
  com.test02.MY.Prn();

 }

}

 

package com.test01;

public class Test {

 public static int getA() {
  return 100;
 }
 
 public static void getB() {
  System.out.println(300);
 }
 
 public static char getCh() {
  return 'A';
 }
 
 public static double getD() {
  return 90.9;
 }
 
 public static void main(String[] args) {

  int a=getA();
  System.out.println("a="+a);
  System.out.println("a="+getA()); // 바로 메서드로 호출해서 출력
  // System.out.println(getB()); 에러메세지 출력
  
  System.out.println(getCh()); // A
  System.out.println(getD()); // 90.9
  
  int hap=(int)(getA()+getD());
  System.out.println("hap="+hap);
  
// int a=(int) 90.9; 90 double d=90; 90.0
  

 }

}

 


 

 

'BigData > JAVA' 카테고리의 다른 글

[Day5] 캡슐화  (0) 2015.03.05
[Day5] 반복문  (0) 2015.03.05
[Day4] 조건문  (0) 2015.03.05
[Day2] 자료형  (0) 2015.03.05
테스트  (0) 2015.03.04
  Comments,     Trackbacks