본문 바로가기

카테고리 없음

탈출 분석

탈출 분석

Escape analysis (영문 : Escape analysis)는 컴파일러 최적화 이론에서 포인터의 동적 범위를 지정하는 방법입니다.

이스케이프 분석은 포인터 분석 및 모양 분석과 관련됩니다.

변수와 객체가 서브 루틴에 할당되면 변수에 대한 포인터는 다른 실행 스레드 또는 호출자 루틴으로 "벗어날"수 있습니다.

서브 루틴이 객체를 할당하고 포인터를 반환하면 객체는 프로그램의 무기한 위치에서 액세스 할 수 있습니다.

포인터가 전역 변수 또는 다른 데이터 구조에 저장되어있는 경우에도 현재 프로세스에서 탈출하는 것으로 간주 할 수 있습니다.

탈출 분석은 포인터가 저장 될 수있는 모든 장소를 식별하고 포인터의 수명이 현재 함수 또는 스레드 내에서만 제한 될 수 있는지 여부를 결정합니다.

최적화

컴파일러는 이스케이프 분석 결과를 최적화의 기초로 사용합니다.

스택 할당에 대한 힙 할당 대체 : 객체가 서브 루틴 내에 할당되고 객체에 대한 포인터가 이탈하지 않으면 해당 객체는 힙 대신 스택에 할당 할 수있는 후보가됩니다.

동기 처리 생략 : 오브젝트가 하나의 스레드 내에서만 액세스되는 것으로 판명되면 동기 처리를 수행하지 않고 오브젝트에 대한 처리를 수행 할 수 있습니다.

객체 분할 또는 스칼라 변수로 바꾸기 : 객체에 대한 접근 방법에 따라 객체가 메모리 구조에서 연속적으로 존재할 필요가 없다는 것이 밝혀지면 객체의 일부는 CPU 레지스터에 저장 될 수 있습니다.

기억 경우가 있습니다.

실용 고려 사항

객체 지향 프로그래밍 언어에서 동적 컴파일러는 특히 탈출 분석의 유망한 후보입니다.

전통적인 정적 컴파일에 의한 메소드 오버라이드 (override)에서는, 이스케이프 (escape) 분석이 불가능할 때도 있습니다.

한 가지 방법은 포인터를 이스케이프하는 다른 버전의 메서드로 재정의 될 수 있습니다.

동적 컴파일러는 오버로드에 대한 정보를 기반으로 이스케이프 분석을 수행하고 동적로드로 메서드를 재정의하면 다시 분석을 수행 할 수 있습니다.

이스케이프 분석은 Java 언어에 특히 중요합니다.

Java 힙 특정 객체 할당, 스레드 지원, Sun의 HotSpot 동적 컴파일러의 결합은 이스케이프 분석과 관련된 최적화를위한 유망한 플랫폼을 만듭니다.

자세한 내용은 Java의 이탈 분석을 참조하십시오.

이스케이프 분석은 Java Standard Edition 6에서 구현됩니다.

별칭 분석

포인터 분석

형상 분석

"https://en.wikipedia.org/w/index.php?title= 이스케이프 분석 및 구식 = 46783120"에서 가져옴

This article is taken from the Japanese Wikipedia

This article is distributed by cc-by-sa or GFDL license in accordance with the provisions of Wikipedia.

Wikipedia and Tranpedia does not guarantee the accuracy of this document. See our disclaimer for more information.

In addition, This site is simply not responsible for any show is only by translating the writings of foreign licenses that are compatible with CC-BY-SA license information.