[Java]자바에 컴파일러 최적화에 의하여 정적할당되는 경우 (with C++)

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; 

}


댓글

이 블로그의 인기 게시물

[gpt/gpt와 대화/번역]이미지생성형ai와 인공지능에 대하여

[C#]CS1612: 'List.this[int]'은(는) 변수가 아니므로 해당 반환 값을 수정할 수 없습니다.

[AI요약/퍼플렉시티]게임산업의 침체와 한국게임업계의 희망