데드스토어
Dead store컴퓨터 프로그래밍에서 값이 할당되어 있지만 후속 명령에 의해 읽히지 않는 로컬 변수를 데드 스토어라고 합니다.데드(Dead)는 프로세서의 시간과 메모리를 저장하고 정적 프로그램 분석을 사용하여 검출할 수 있으며 최적화 컴파일러에 의해 제거됩니다.
저장소의 목적이 의도적으로 데이터를 덮어쓰는 경우(예를 들어 암호 삭제 시 등), 데드 저장소 최적화에 의해 쓰기가 발생하지 않아 보안 문제가 [1]발생할 수 있습니다.일부 시스템 라이브러리에는 이러한 위험한 최적화를 방지하기 위해 설계된 특정 기능이 있습니다.explicit_bzero
OpenBSD에 [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]콜로만 줄일 수 있습니다."
「 」를 참조해 주세요.
레퍼런스
- ^ "Insecure Compiler Optimization OWASP".
- ^ "OpenBSD manual pages". man.openbsd.org. Retrieved 2016-05-14.
- ^ "HTML5, and Real World Site Performance: Seventh IE9 Platform Preview Available for Developers".