2017-03-01 1 views
4

정확하게 가비지 수집 작업을 어떻게 줄일 수 있습니까? 우리는 모두 redux가 불변성을 조장한다는 것을 압니다. 그러면 오래된 상태 인스턴스는 어떻게됩니까? 내가 같은 경우가 있다면 내 감속기의 예를 들어 : 나는 MY_ACTION 활동 100 번을 발사하면 지금redux 가비지 수집은 어떻게 작동합니까?

... 
case 'MY_ACTION': 
    return state.set('name', action.name) 
... 

이 코드는 새 객체 100 시간을 만들 것입니다.

제 질문은 더 이상 사용되지 않는 이전 상태 객체에 어떤 일이 생길 것인가입니다. 그들은 자바 스크립트/브라우저 가비지 컬렉터에게 무엇을 해야할지 결정할 것입니까? 그렇다면 퍼포먼스 문제가 아닐 수 있습니다. 즉 많은 오래된 '상태'객체가 자바 스크립트 가비지 수집기의로드를 증가시켜 코드 성능을 저하시키지 않을까요?

+0

JS 코드에서 메모리를 수동으로 지울 수있는 방법이 없으며 가비지 수집기가 일정에 따라 작업하도록 window.runGC() 메소드가 없으므로 ... – nnnnnn

+0

오른쪽. 그러나 나는 이것이 확실히 명백한 문제라고 생각하면서, redux 제작자가이를 고려하여 어떤 방식 으로든 또는 다른 방식으로 처리 했어야했는지 확신합니다. –

답변

3

Redux 자체는 간단한 상태 관리 라이브러리입니다. 가비지 수집과 관련된 사항은 Javascript 엔진에서 처리합니다. 따라서 Redux 제작자는 가비지 수집이 Redux 라이브러리 자체와 아무 관련이 없으므로이를 "고려하지 않았습니다".

예, 불변의 데이터 처리는 직접적인 돌연변이보다 많은 오브젝트를 생성하지만, JS 엔진은이를 잘 처리합니다.

관련 문제