가상 메모리 영역 JVM -1

데이터 영역 된 .java

               프로그램 카운터, Java 가상 머신 스택 원시 메소드 스택 자바 힙, 메소드 영역 상수 풀 동작 (영역에있어서의 일부), 직접 메모리 (비 가상 머신의 데이터 영역의 일부가 실행되는)

               스레드 공유, 스레드 개인

                                                     

 

     1.1 프로그램 카운터

                 그것은 그것의 역할은 신호 표시기에 의해 실행되는 헤드 바이트 코드 스레드로 간주 될 수 있으며, 작은 메모리 공간이다.

                 이 작업의 바이트 코드를 인터프리터 실행되는 바이트 코드의 지시로 지시 중 하나를 선택하는 카운터의 값을 변경하는 분기 루핑 분지, 예외 처리, 및 다른 기본 기능 스레드 회복 카운터 완전한 의존한다는 것이다

           이 메모리 영역은 지역 OutOfMemoryError가 자바 가상 머신 사양의 모든 상황에 제공 할 수있는 유일한 하나입니다.

     1.2 Java 가상 머신 스택

                 수명주기 및 스레드의 일관성. 자바 메모리 모델을 수행하는 방법의 설명이다 실행될 스택 프레임 (스택 프레임)을 생성하기 위해 각 방법 때 정보, 오퍼랜드 스택, 동적 링크있어서 수출 기억 베드 로컬 변수 테이블. 실행을 가상 기계 프로세스 스택 스택에서 스택에 대응하는 스택 프레임이 종료 될 때까지 각각의 메소드 호출.

                 참고 : 자바에게 방법을 반환하는 두 가지 방법 : return 문을, 예외가 발생, 두 사람은 스택 프레임에서 튀어되어 발생합니다.

                 스택 프레임 표 로컬 변수 오퍼랜드 스택에있어서, 입구와 출구를 보유

                 로컬 변수 테이블 : 공지 (부울 바이트 문자, 단락, INT, 플로트, 긴 이중), 오브젝트 참조 (레퍼런스 타입의 기본적인 형태의 편집을 저장하는 단계, 참조가 상기 대표 가리킬 수도 오브젝트 어드레스 포인터를 가리킬 수도 ) 리턴 주소 유형을 객체를 처리합니다.

                스택 변수 참조 및 로컬 (최종 포함한 로컬 변수) (즉 : 방법 또는 참조의 본문에 정의 된 변수)을 참조 로컬 변수 스택에 저장된다

               스택은 또한 로컬 객체 (참조 형 본체의 프로세스 변수의 정의)에 대한 참조를 저장하고, 기준 객체는 객체 자체 아니지만 개체 힙 주소, 즉 로컬 객체 참조는 언급 스택에 저장된 힙 주소 객체

     1.3 네이티브 메소드 스택

                 가상 머신 스택 자바 서비스 기본 방법은 작업 테이블 수단을 저장하는 로컬 변수, 스택 프레임을 생성한다 원시 메소드 스택에서 수행되는 로컬 방법에 대한 서비스와 유사한 역할을하는 스택, 동적 링킹, 반출 정보의 수.

                 현지 방법은 비 호출 인터페이스 자바 자바 코드, 네이티브 방식을 말한다. C와 같은 비 자바로 구현 된 방법의 구현

     1.4 자바 힙

                존재의 의미는, 객체 인스턴스를 저장하는 거의 모든 인스턴스를 반대하고 여기에 메모리 어레이를 할당하는 것입니다. 개체가 자동으로 관리되는 내부 이것은 또한 운용 GC (가비지 수집)로 알려져있다.

                인스턴스 변수 (비 변형 부재 정적 변수) 및 오브젝트 관련 함께 인스턴스 변수 힙 그래서 

                또한 자바 힙 메모리 공간의 배열을 열어

     1.5 방법 영역

                공유 메모리 영역이, 클래스 정보 기억이 가상 머신에로드되고, 상수, 정적 변수, 타임 컴파일러 코드 및 다른 데이터를 컴파일한다. 런타임 상수 풀은 메소드 영역에있는 경우

                클래스 로더시 발생의 java.lang.Class 객체 (Class 객체)가 아니라 힙 (새로운 인스턴스 개체)보다, 메소드 영역에 저장됩니다.

                가상 머신을로드하여, 및 유형이 경험 한 위의 세 가지 프로세스에 바인딩 된 클래스를 사용하기 위해 실행하는 자바 프로그램에서 사용할 수 있도록, 자바 타입 커넥터를 초기화 참고 :

          쓰레기 수집은 주로 정수 풀 복구 및 하역의 유형에 관한 것이다.

                클래스 정보 :로드 (클래스 클래스, 인터페이스 인터페이스, 열거 열거, 주석 주석)의 각 유형, JVM이 과정에서 정보 영역의 다음과 같은 유형을 저장해야합니다.

                     이러한 유형의 완전한 이름 (이름 = 패키지 이름. 클래스 이름)

                     직접 부모의 타입의 완전한 이름 (java.lang.Object 상위 상위 클래스 선언의 다른 유형이없는 경우를 제외하고, 기본은 부모 클래스 개체입니다)

                     수정이 유형 (공공, 추상, 최종의 부분 집합)

                     이러한 타입의 인터페이스는 정렬 된리스트 지시하는
                     추가 방법은 영역 (방법 지역) 및 정보 기억 클래스 상수 풀 (상수 풀), 필드 (필드) 정보, 방법의 종류를 (방법) 정보

                     모든 정적 일정한 정적 변수 이외에               

               상수 : 멤버 변수 (상수)의 정적 최종 변형 예에있어서 영역 (방법 지역)에 저장되고

               정적 변수 : 정적 변형 멤버 변수

                     정적 변수 및 클래스는 클래스로드와 함께 관련 있기 때문에, 클래스 변수라고도 정적 변수, 처리 영역에 존재 (힙보다 오히려)

                    8 개 가지 기본 데이터 타입 (바이트 단, INT, 긴, 플로트, 더블, 숯, 불리언) 프로세스의 오픈 공간 영역에서 정적 변수 및 해당 영역 수단에 저장된 값을 기준 변수 경우 정지형 할당 없음 (예 : 정적 오브젝트 OBJ는) 다음 오브젝트 레퍼런스 영역 법에 저장 obj에 새로운 참조 타입을 이용하여 정적 변수없고, 디폴트 널 값을 할당, 만약 정적 변수의 입력하면 참조 정적 변수 참조 형식 (예 : 정적 인 사람 = 새로운 사람 ())의 새로운 키워드 할당 후 사용자는, 기준 영역 법에 저장되고 오브젝트 주소는 프로세스의 스택 객체에 저장된 지역 (단지이 시간을 개체의 힙 주소를 저장하는 정적 변수에 유의하지만, 객체 자체는 힙 메모리에 남아 있습니다)               

               시간 컴파일러 후 코드를 컴파일합니다 :

                  바이트 코드로 컴파일 된 프로그램에로드 된 클래스, 프로세스 정적 변수 (클래스 변수) 및 정적 방법 바이트 코드 영역을 로딩하는 방법에 대응 한 종래의 방법을 실행한다.

                 클래스 로딩에 앞서 해당 객체 클래스를 생성하기 때문에 어떤 인스턴스 변수 영역에있어서, 인스턴스 변수는 서로 연관되지 않고, 목적, 어떤 객체가 존재하지 않는 경우 변수는 어떤 객체 클래스 로딩, 메소드 영역 없다 어떤 인스턴스 변수 없습니다

            정적 변수 (클래스 변수) 및 고정 방법 및 그 방법 (방법 지역)의 기억 영역에서의 종래의 방법은 구별

      1.6 정수 풀을 실행

                상수 : 최종 수정 멤버 변수가 한번 소정의 상수 값을 나타낸다는 변경 될 수 없다

                 정적 변수, 인스턴스 변수와 지역 변수 : 세 가지 변수의 최종 수정

                의 .class 파일 정수 풀을 * 정적 정수 풀은, 클래스 파일 정수 풀은 또한 정보의 클래스, 메소드를 포함, 문자열 리터럴 (디지털)를 포함뿐만 아니라, 파일 클래스 차지하는 공간의 대부분.

               런타임 상수 풀은 클래스의 완료 후 JVM 가상 머신로드 작업이며, 클래스 파일 정수 풀 메모리에로드 및 방법 영역에 저장됩니다, 우리는 종종 상수 풀, 메소드 영역을 의미 말 리터럴 (문자열 최종 상수 값) 생성 컴파일러의 다양성 기준 심볼 기억 상수 풀 런타임 (및 디스크립터 필드 이름, 클래스 및 인터페이스의 완전한 이름 메소드 이름과 설명)

                 자바 래퍼 클래스의 8 가지 기본 유형의 대부분은 구현되지 않습니다 그들이 바이트, 짧은, 정수, 롱, 문자, 부울, 포장의 다른 두 개의 부동 소수점 유형 (플로트, 더블)이며, 정수 풀 기술을 구현 . 또한 바이트, 짧은, 정수, 긴, 문자, 정수 풀 -128127에 해당하는이 다섯 개 포장에만 정수 값.

      1.7 직접 메모리

               직접 메모리의 런타임 데이터 영역의 일부는 가상 시스템이 아닌

코드 알아야 할 사항

        // 로컬 변수 스택 프레임 (p)의 주요 방법이다
         // 새로운 새로운 인격 () 객체가 힙 공간에 분배 
        는 Person p = 새로운 새로운 인격 ();
         // 스택 SUM 새로운 INT [10]의 힙 공간 
        INT [] = SUM 새로운 새로운  INT [ 10 ]
 클래스 는 Person 
{    // 힙 (힙)의 예 변수 이름과 나이가 할당 공간 
    개인 문자열 이름;
     개인  INT의 시대;
     // 클래스 변수 (참조 형식) 및 NAME1 "CN" 메소드 영역 (영역 법 등)에 
    전용  정적 스트링 NAME1 = " CN " ;
     // 프로세스 영역 NAME2 (있어서, 영역)에서 클래스 변수 (참조 형)
     //오브젝트 힙 (힙) 공간에 할당 된 새로운 문자열 ( "CN") 
    개인  정적 스트링 = NAME2 새로운 새 문자열 ( " CN " );
     // NUM 힙 새로운 INT [10] 또한 적층 
    개인  INT [] NUM = 새로운 새  INT [ 10 ] 
    는 Person (문자열 이름, INT의 나이) 
    {    
        // 이 파라미터 및 이름, 나이 생성자가 호출 될 때
         // 스택 프레임 공법 공간 열리는 
        이 본 .name을 = 이름,
         이 본 = .age 나이; 
    } 

    // 프로세스 존 내의에서는 setName () 메소드 
    공개  공극 이 본 에서는 setName (문자열 이름)
    {
        = .name을 이름; 
    } 

    // (말) 프로세스 존에있어서 
    공용  공극 말하기 () 
    { 
        시스템. OUT .println ( 이 본 .name을 + " ... " + 이 본 .age); 
    } 
}

 

추천

출처www.cnblogs.com/tansuiqing/p/11197513.html