업데이트 : 밝혀진 이미지의 크기가 5k 해상도로 설정되어있어 거대한 램 사용량입니다. 가비지 수집이 낮은 입술 사진에서 시작되는 동안 사이트는 안드로이드 크롬을 위해 무겁게 무겁게 할 것이다. 모든 tho 응답자에게 감사합니다.ReactJS Img 태그 메모리 누수
여러분 ReactJS 및 일부 img 태그에 약간의 문제가 있습니다. 내 코드가 자바 스크립트에 JSX를 사용하지 않습니다. 내 스플래시 페이지는 120 메가 바이트의 메모리를 차지하지만 6 개의 이미지가있는 섹션으로 이동하면 이미지가 900kb인데도 메모리 풍선이 최대 900 메가 바이트가됩니다. shouldComponentUpdate를 설정했는데 이미지가 일관되게 업데이트되지 않습니다. 캐싱을 위해 무작위 쿼리 플래그를 추가하여 메모리 누출을 변경하지 않았습니다.
var Modal_Image = React.createClass({
showModal: function(url){
store.dispatch({type: "SHOW_MODAL", src: url});
},
shouldComponentUpdate: function(next_props, _){
console.log("modal image might update");
if(next_props.url != this.props.url){
return true;
}
if(next_props.size != this.props.size){
return true;
}
return false;
},
componentDidUpdate:function(){
console.log("modal image updated");
},
render: function(){
return(
React.createElement("div", {className: "image-holder " + this.props.size},
React.createElement("img", {src: this.props.url, className: "home-image c-hand", alt: "", onClick: this.showModal.bind(this, this.props.url) })
)
)
}
});
크기의 소품이나 URL의 소품도가 변화되고 console.logs는 변경 사항을 다시보고되지 않습니다 아직 크롬은 이러한 이미지를 저장하는 800 메가 바이트 필요합니다. 이미지와 관련된 메모리 누출 문제를 해결하기위한 아이디어 나 힌트가 있습니까?
추가 : /** * 반작용 v15.3.0 */
편집 :
- componentWillUnmount 방법을 제거 하였다.
- 는 fadeIn 애니메이션 제거
- 제거 쿼리 플래그 파열 캐시는이에 적용된 DOM 노드에 데이터를 추가하기 때문에,
불행히도 정리하기 위해 메모리 누수를 발견 한 후 jQuery 메서드가 추가되었습니다 (빈 노드는 분리 된 dom 노드를 제거합니다). 방금 삭제했는데 문제가 남아 있습니다. 그래도 포인터에 감사드립니다. 문제는 다른 곳에있는 것으로 보입니다. – liminal18
Chrome 개발자 도구 (메모리 진단) (https://developers.google.com/web/tools/chrome-devtools/profile/memory-problems/memory-diosis-hl=ko) 방법을 사용해보세요. –
그래, 범인을 알아 내기 위해 그걸 사용했지만 다시 살펴 보겠습니다. 지금은 사이트의 단순화 된 버전을 구축하여 다른 곳에서 버그를 복제 할 수 있는지 확인합니다. – liminal18