데드스토어

Dead store

컴퓨터 프로그래밍에서 값이 할당되어 있지만 후속 명령에 의해 읽히지 않는 로컬 변수를 데드 스토어라고 합니다.데드(Dead)는 프로세서의 시간과 메모리를 저장하고 정적 프로그램 분석을 사용하여 검출할 수 있으며 최적화 컴파일러에 의해 제거됩니다.

저장소의 목적이 의도적으로 데이터를 덮어쓰는 경우(예를 들어 암호 삭제 시 등), 데드 저장소 최적화에 의해 쓰기가 발생하지 않아 보안 문제가 [1]발생할 수 있습니다.일부 시스템 라이브러리에는 이러한 위험한 최적화를 방지하기 위해 설계된 특정 기능이 있습니다.explicit_bzeroOpenBSD에 [2]있습니다.

Java의 데드스토어 예:

// DeadStoreExample.java 수입품 java.displaces를 클릭합니다.어레이 리스트; 수입품 java.displaces를 클릭합니다.어레이; 수입품 java.displaces를 클릭합니다.목록.;  일반의 학급 Dead Store 예시 {     일반의 정적인 무효 주된(스트링[] args) {         목록.< >스트링> 목록. = 신규 어레이 리스트< >스트링>(); // 이것은 데드스토어입니다.ArrayList는 읽히지 않기 때문입니다.          목록. = 리스트의 취득();         시스템..나가..인쇄(목록.);     }      사적인 정적인 목록.< >스트링> 리스트의 취득() {         돌아가다 신규 어레이 리스트< >스트링>(어레이.리스트("안녕하세요"));     } } 

상기 코드에서는ArrayList<String>오브젝트가 인스턴스화되었지만 사용되지 않았습니다.대신 다음 줄에서 참조하는 변수는 다른 개체를 가리키도록 설정됩니다.ArrayList이 파일은,list이제 가비지 콜렉터 등에 의해 디커버리가 필요하게 됩니다.

데드 스토어의 JavaScript 예:

기능. 기능하다(a, b) {     변화하다 x;     변화하다 i = 300;     하는 동안에 (i--) {         x = a + b; // 데드 스토어     } } 

"루프 내의 코드가 같은 변수를 반복해서 덮어쓰기 때문에 하나의 [3]콜로만 줄일 수 있습니다."

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Insecure Compiler Optimization OWASP".
  2. ^ "OpenBSD manual pages". man.openbsd.org. Retrieved 2016-05-14.
  3. ^ "HTML5, and Real World Site Performance: Seventh IE9 Platform Preview Available for Developers".