https://dzone.com/articles/escape-analysis
//Java문법
public String getCarDescription() {
Car car = new Car();
String description = car.generateDescription();
return description;
}
//아래예제는 java의 Escape에 대한 설명을 위하여 C++로 작성된 코드이다.
//일반적이 자바에서 객체의 할당이라면?
//만약 Car클래스가 내부에서만 접근되지않다면 다음과같이 가비지에 대상에 포함되지않아, Car클래스는 할당상태가 유지된다.
public String* getCarDescription() {
Car* car = new Car();
String* description = car.generateDescription();
return description;
}
//선택적 escape?
//다음과 같이컴파일 최적화가 되어 자동차클래스는 객체 정적할당되고.(NoEscape)
//자동차안에 객체는 복사되어 string객체만 복사카피되어 동적할당된다.(ArgEscape?)
//이경우 굳이 필요하지않은 가비지가 필요한 메모리만 선택적으로 동적할당하여 관리된다.
public String* getCarDescription() {
Car car;
String* pCarString = car.generateDescription();
String* description = new String(pCarString->size());
strcpy( description, car.generateDescription());
return description;
}
댓글
댓글 쓰기