실제 사용하는 며칠입니까 ES6 위크마프?
실제 사용된 '에서 소개된' 데이터 구조를 며칠입니까 위크마프 ECMAScript 6?
이후 해당 키를 매핑해야 약한 tcpg 고정 참조입니다 수 있는 가치 (value) 은 그동안 삽입됨 매핑해야 약한 것으로 결코 사라지는 deltamove 핵심 아직 살아 있다, 이 일은 곧바로 사용할 수 있는 t # 39, 또는 다른 사항은요 캐시합니다 can& 테이블뿐 일반적으로 사용하는 등 취약한 약한 참조를 매핑하며 값뿐만 .용
이 날 것으로 보인다.
weakmap.set(key, value);
.is 운행에서어떠한 이 단순한 하며 "고 말했다.
key.value = value;
어떤 구체적인 활용 사례 놓친 거지?
373
5
근본적으로
(사전) 는 위크마프 지도가 있는 keys 약해 - 즉, 만약 모든 표현은 key 손실됩니다 수 없고 더 값 - 에 대한 참조를 value 쓰레기요 수집되었습니다. # 39 let& s show 를 통해 설명하고, 이 첫 번째 사례, 좀 마지막으로 스크립트종료 실수 있습니다.
39 m, s, API 를 사용하여 I& let& # 39 라고 날 수 있는 특정 객체에는:
이제 나는 객체에는 사용하는 방법입니다.
난 로렌아줌마가 추적할 수 있는 방법 및 보고 몇 번이나 N 번 이상의 경우 특정 개체 발생) 라고 불렸다. 소박하게 매핑해야 사용할 수 있도록 한 것 같은데.
이 기능은 있지만 아직 메모리 누수 - 이제 추적할 수 있는 모든 단일 라이브러리란 객체에는 라이브러리 함수에 전달된 계속 판매업체에서 에서 객체에는 기술입니까 쓰레기요 수집되었습니다. 'A' 위크마프 대신 사용할 수 있습니다.
그리고 메모리 누수가 우리 곁을 떠났다.
활용 사례
활용 사례를 몇 가지 다른 방식으로 인해 메모리 누수 및 활성화되었는지 위크마프 의해 '의 다음과 같습니다.
# 39 에 보면 Let& 실제 사용
외부에서 객체를 확장하는 데 사용할 수 있습니다. # 39 의 열거하십시오 let& 실용적인 (real) 을 만들고, 일종의 적응했다는 점) 의 현실 세계 에서 노엘가이스트 (예:
39 의 말하도다 let& you& # 39, re node. js - 이제 운영까지도 추적할 수 있고 '약속하나요' 객체에는 = 그러나 현재 거절됨 약속을 지키고 싶은 모든 것을 할 수 없는 경우에 수집됩니다 not 그들을 구하사 쓰레기요 타임코드가 참조입니다 그들에게.
지금 # 39, t_ _don& 추가할 수 있어 you& 특성는 넷윈을 객체에는 명백하네 이유 # 39, re 한다. 자꾸 이런 약속은 참조에서는 다시 일어날 수 있는 메모리 누수가 you& # 39, re 때문에 가비지 컬렉션 없으므로. 그럼 # 39, t, t # 39 don& 경우 렉시한테서 참조입니다 can& 대한 추가 정보를 저장 개별 공약. Id 를 포함하는 모든 구성표가 절약합니다 약속하나요 본질적으로 고말은 참조입니다 필요한 것이다.
입력하십시오. 위크마프스
위크마프스 짓궂군요 작업자쪽에서 keys 약하다. 열거하십시오 모든 맵 또는 해당 값을 얻을 수 있는 방법이 없기 때문이다. 인할지 매핑해야 있겠느뇨 따라 데이터를 저장할 수 있고, 주요 언제 그렇게 수집됩니다 키 값을 쓰레기요 된다.
즉, 주어진 약속하나요 저장할 수 있는 개체 수는 스테이드 그것에 대해 리스토어와 쓰레기요 수집되었습니다. 나중에 받는 경우 정보기술 (it) 과 관련된 객체에 대한 참조가 있으시면 보고하십시오 상태를 확인할 수 있습니다.
이것은 구현하는 데 사용되는 [처리되지 않은 거부 후크] (https://github.com/iojs/io.js/issues/256) 에 따라 페트카 안토노프 [이] (https://iojs.org/api/process.html # process_event_unhandledrejection):
우리가 계속 정보를 알 수 있는 공약을 내걸고 때 거절됨 약속하나요 처리되었습니다.
이 오토메이티드 실제 시나리오에서 바이어스됨 및 사용할 수 없는 것으로 보인다. # 39 는 don& 정보기술 (it) 을 읽어 보십시오, 실제 실험을 보다 다른 사항은요 옵션을 표시됨과 나을 수밖에 없다.
이를 사용할 수 있는 览侩 荤례 리스너에 사전, I have a 동료가 그 누가 그랬지. 모든 것은 아주 도움됐네 때문에 리스너에 타겟팅 된 것은 바로 이와 같은 방식으로 업무를 수행하는 것을. '굿바이' 리스테네스터슨.
하지만 보다 추상적인 '에서' 에 대한 관점, 특히 강력한 위크마프 아무것도 할 수 없는 경우, 기본적으로 구체화 액세스하려면 don& # 39 이름공간이 멤버를 격리합니다 때문에 이미 묵시적 성격상 이 구조의. # 39 m, 아주 잘 할 수 있는 몇 가지 주요 메모리 향상 i& 교체하십니까 어색한 예비형 객체에는 키 (비록 해체하면서 높여줍니까 작동합니까 당신꺼에요).
다음 지정하십시오. 읽기 전에
이제 나의 가장 좋은 방법은 정확히 알고 있지 않은 나는한다 강조하십시오 문제를 해결을 할 수 있다 벤햐민 그루에누스바움 지적했다 (체크아웃하려고 그의 답변은 it& # 39 위에 있지 않은 경우, s 내거냐 p), 이 문제를 해결할 수 있는 '일반' 매핑해야 않았을 만큼 유출 주요 강점은 ', 즉' 위크마프 좋았을 거라는 것이 없는 점을 감안하면 렉시한테서 참조입니다 가비지 컬렉션 간섭을 받지 않습니다.
다음은 내 동료가 실제 코드를 (덕분에 그를 의 공유)
3, [전체 소스 여기서요] 에 대한 얘기를 내가 리스너에 관리 it& # 39 위 (사양 에 대해 걸릴 수도 있습니다)
'' 만족스럽게 위크마프 캡슐화 및 정보 은폐
'' 위크마프 잔인하니 ES6 대해서만 사용할 수 있습니다. A '의 쌍' 은 취합은 위크마프 키와 값을 있는 주요 객체여야 합니다. 다음 예에서는 저희에게는힘과 구축하십시오 위크마프 '' 두 개의 항목:
당사는 '세트 ()' 방식을 사이의 연관을 정의하십시오 객체와 다른 항목 (문자열으로 emc 의 경우). 당사는 '프레젠테이션이든 ()' 방식을 읽어들입니다 관련된 항목 객체를. 흥미로운 것은 '는 것은 약한 부분을 위크마프 참조입니다 지도를 키를 쥐고 있다. 이 경우, 즉 약한 참조입니다 객체인지 파기됨 위크마프 ',' 에서 전체 엔트리여야 쓰레기요 모음기 거역한다면 분리하십시오 카타시안 확보함으로써 메모리.
내가 사용하는 '의' 에 대해 불변 객체로 걸릴 수 있는 기능을 위크마프 캐시에는 worry-free 메모이제이션 그들의 매개변수입니다.
메모이제이션 () 는 이 값을 계산한 다음, 캐시, 라고 돌림무늬 운행에서어떠한 " don& 계산할 수 있도록 # 39 이 again" 없다;;).
39 의 here& 예:
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
몇 가지 사항을 참고:
& # # # # # # 120302 120321 120306 120288, & # 120302 120305,,, & # 120321, & # 120302,,,
메타데이터 요소를 있겠느뇨 매핑하므로 저장하는 데 사용할 수 있어 코드에 대해 간섭하지 않고 쓰레기 수집 (dom 또는 직장 동료 화가. 예를 들어, 숫자 인덱스화할 포락선으로 사용할 수 있는 모든 요소에 웹 페이지.
& # # # # # # 120309 120321 120310 120298, & # 120322 120316,,,, & # 120321 비트& & & # # # # # 120312 120302 120306 120298, & # 120302 120288,,, & # 120317, & # 120320,,, & # 120316, & # 120319. & # # # # # 120312 120302 120306 120298, & # 120306 120294,,, & # 120321, & # 120320,,,:
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 거짓값 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
& # # # # # # 120315 120310 120320 120296, &, &, &, & 120308. & # # # # # 120312 120302 120306 120298, & # 120302 120288,,, & # 120317, & # 120320,,, & # & # 120315, & # 120305 120302;; & # # # # # 120312 120302 120306 120298, & # 120306 120294,,, & # 120321, & # 120320,,,:
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 거짓값 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
& # # # # 및 120295 120309, & 120306;; & # # # # # 120307 120307 120310 120279, & # 120319 120306,,, & # 120306, & # & 120315, & # &, & # 120306 비트& 120304;; 거의 차이를 보일 수 있지만, 사실은 더 이상 별도로 위크마프 버전이, 귀신을 주된 차이점은 두 개의 코드 (위 그림 참고). 첫 번째 코드 조각을 매핑하며 코드 저장소를 참조입니다 있겠느뇨 스니핏 없이 모든 요소 사이의 어떤 길을 DOM. 이렇게 하면 DOM 요소를 기술입니까 쓰레기요 수집되었습니다. '마테오파우 (i, 2) % 렌]' 등과 같은 괴짜 없는 것 같아 보일 수 있습니다, 하지만 다시 사용하게 된다. dom 은 많은 운영 코드를 참조입니다 튀어오름 all over the 문서. 지금은 모든 요소가 있겠느뇨 수 있기 때문에, 두 번째 코드 부분을 참조들이 일러주라하셨으니 너희에의 노드입니다 제거하시겠습니까 브라우저는 노드입니다 사용하지 않는 것을 확인할 수 있습니다 (코드에 의해 도달했음 수 없습니다) 및 카타시안 삭제되지는 메모리. 왜 메모리 사용량, 메모리 앵커 이유에 대해 걱정을 해야 한다는 거죠 (첫 번째 요소는 메모리에 있는 비사용률 스니핏 같은 코드) 는 메모리 사용량이 늘어날수록 더 많은 데이터를 있지만브라우저에 gc 시도_횟수 (수 있도록 노력할 것을 막기 위해 메모리를 확보하십시오 있지만브라우저에 충돌) 는 느린 브라우징, 때로는 있지만브라우저에 산산조각나요
이 경우, 난 내 스스로 한 경우와 폴리필 추천합니까 라이브러리 (늑대굴에서 여기서요 @ 깃허브). 아주 가벼운 library 가 정보기술 (it) 의 다른 폴리필스 너무 복잡한 방법으로 프레임워크와도 없이 단순히 폴리필 얻을 수도 있습니다.
사람들이 날 경우 시작 꺄오! - <, 만일의 사태에 대비해 우리 섹스한거요 어리석은 것. 내가 말 그대로 느낄 수 없는 경우, 아마도 이러한 사례가 많기 때문에 실용적인 응용 프로그램 프로젝트를 수행됨을 DOM 에 동적으로 웹 페이지를 내지는 수정하십시오 어떻게든지해서 빨리 구식이 정적으로 생성할지 참조입니다 또는 다른 하고 있다. 그러나 이는 , 운영본 코드 예제를 사용하여 이를 데 없는 단지 기술입니까 확보하십시오 집중식으로 WeakMaps.->.
~ 즐거운 코딩!