jQuery 또는 페이지의 메모리 사용량을 찾기 위한 javascript
웹 페이지나 jquery application에서 얼마나 많은 메모리가 사용되고 있는지 알 수 있는 방법이 있습니까?
제 상황은 이렇습니다.
JSON에서 데이터를 제공하는 jquery front end와 restful back end를 사용하여 데이터 헤비 웹앱을 만들고 있습니다.페이지가 한 번 로드되고 모든 일이 ajax를 통해 이루어집니다.
UI는 사용자에게 UI 내에 여러 개의 탭을 만들 수 있는 방법을 제공하며, 각 탭에는 수 많은 데이터가 포함될 수 있습니다.탭을 만들 수 있는 수를 제한하는 것을 고려하고 있지만, 메모리 사용량이 일정 임계값을 초과한 경우에만 탭을 제한하는 것이 좋을 것으로 생각하고 있습니다.
답변을 바탕으로 몇 가지 설명을 드리겠습니다.
- 응용 프로그램이 사용자 브라우저의 메모리 사용량에 따라 작업을 결정할 수 있도록 런타임 솔루션을 찾고 있습니다.
- DOM 요소나 문서 크기를 세는 것은 좋은 추정일 수 있지만 이벤트 바인딩, 데이터(), 플러그인 및 기타 인메모리 데이터 구조를 포함하지 않기 때문에 매우 정확하지 않을 수 있습니다.
2015년 업데이트
2012년 당시에는 사용 중인 모든 주요 브라우저를 지원하려면 이 기능이 불가능했습니다.안타깝게도, 지금도 이것은 Chrome의 유일한 기능입니다(비표준 확장 기능).window.performance).
window.performance.memory
브라우저 지원:크롬6+
2012년 답변
웹 페이지나 jquery application에서 얼마나 많은 메모리가 사용되고 있는지 알 수 있는 방법이 있습니까?응용 프로그램이 사용자 브라우저의 메모리 사용량에 따라 작업을 결정할 수 있도록 런타임 솔루션을 찾고 있습니다.
간단하지만 정답은 아니오입니다.모든 브라우저가 이러한 데이터를 사용자에게 노출하는 것은 아닙니다.그리고 단순히 "수제" 솔루션의 복잡성과 부정확성으로 인해 해결하는 것보다 더 많은 문제가 발생할 수 있기 때문에 아이디어를 포기해야 한다고 생각합니다.
DOM 요소나 문서 크기를 세는 것은 좋은 추정일 수 있지만 이벤트 바인딩, 데이터(), 플러그인 및 기타 인메모리 데이터 구조를 포함하지 않기 때문에 매우 정확하지 않을 수 있습니다.
당신이 정말로 당신의 생각을 고수하고 싶다면 고정된 내용과 동적인 내용을 분리해야 합니다.
고정 콘텐츠는 사용자 작업(스크립트 파일, 플러그인 등에서 사용하는 메모리)에 의존하지 않습니다.
다른 모든 것은 동적인 것으로 간주되며 한계를 결정할 때 주요 초점이 되어야 합니다.
하지만 그것들을 요약하는 쉬운 방법은 없습니다.이 모든 정보를 수집하는 추적 시스템을 구현할 수 있습니다.모든 작업은 적절한 추적 방법을 호출해야 합니다. 예:
랩 또는 덮어쓰기jQuery.data데이터 할당에 대해 추적 시스템에 알리는 방법.
합니다(html 을 합니다 도 합니다 도 을 innerHTML.length는 최선의 추정치입니다.
대용량 메모리 개체를 유지하는 경우에도 모니터링해야 합니다.
이벤트 바인딩의 경우 이벤트 위임을 사용해야 하며 이는 다소 고정된 요소로 간주될 수도 있습니다.
메모리 요구사항을 정확하게 추정하기 어려운 또 다른 측면은 브라우저마다 (Javascript 객체 및 DOM 요소의 경우) 메모리를 다르게 할당할 수 있다는 점입니다.
Navigation Timing API를 사용할 수 있습니다.
내비게이션 타이밍(Navigation Timing)은 웹에서 성능을 정확하게 측정하기 위한 자바스크립트 API입니다.API는 페이지 탐색 및 로드 이벤트에 대한 정확하고 상세한 타이밍 통계를 얻을 수 있는 간단한 방법을 제공합니다.
window.performance.memory는 자바스크립트 메모리 사용 데이터에 접근할 수 있게 해줍니다.
기
이 질문은 5년 전의 것으로, 이번에는 자바스크립트와 브라우저 모두 놀라운 발전을 이루었습니다.이제는 (적어도 일부 브라우저에서는) 이것이 가능하고, 이 질문은 구글에서 "javscript show memory useage"를 검색할 때 첫 번째 결과이기 때문에 현대적인 솔루션을 제안하고 싶다고 생각했습니다.
memory-fault.js: https://github.com/paulirish/memory-stats.js/tree/master
페이지에서 언제든지 실행할 수 있는 이 스크립트는 페이지의 현재 메모리 사용량을 표시합니다.
var script=document.createElement('script');
script.src='https://rawgit.com/paulirish/memory-stats.js/master/bookmarklet.js';
document.head.appendChild(script);
브라우저에서 얼마나 많은 메모리가 사용되고 있는지 실제로 알 수 있는 방법은 없지만 페이지의 요소 수에 따라 휴리스틱을 사용할 수 있습니다.UinsjQuery, 당신은 할 수 있습니다.$('*').lengthDOM 요소의 개수를 계산할 수 있습니다.하지만 솔직히 사용적합성 테스트를 좀 하고 지원할 탭 수를 고정하는 것이 더 쉬울 것입니다.
메모리 버그라는 파이어버그 도구도 있지만 아직 많이 성숙하지 않은 것 같습니다.
테스트를 위해 알아보고 싶다면 개발자 페이지를 통해 Chrome에서 메모리 사용을 추적하는 방법이 있지만 자바스크립트로 직접 수행하는 방법은 확실하지 않습니다.
다른 답변과는 전혀 다른 해결책을 제안하고 싶습니다. 즉, 애플리케이션의 속도를 관찰하고 애플리케이션이 정의된 수준 이하로 떨어지면 탭을 닫을 수 있는 팁을 사용자에게 보여주거나 새 탭이 열리지 않도록 설정하는 것입니다.이러한 종류의 정보를 제공하는 간단한 클래스는 예를 들어 https://github.com/mrdoob/stats.js 입니다. 이와 별도로, 이러한 집중적인 응용 프로그램은 우선 모든 탭을 메모리에 유지하는 것이 현명하지 않을 수 있습니다.예를 들어 사용자 상태만 유지(스크롤)하고 마지막 두 탭을 제외한 모든 데이터를 매번 로드하는 것이 더 안전한 옵션일 수 있습니다.
마지막으로, 웹킷 개발자들은 자바스크립트에 메모리 정보를 추가하는 것에 대해 논의해 왔지만, 무엇이 노출되어서는 안 되는지에 대해 많은 논쟁을 벌였습니다.어느 쪽이든 간에, 몇 년 안에 이런 종류의 정보를 이용할 수 있을 가능성은 높지 않습니다(비록 그 정보가 지금 당장은 그리 유용하지는 않지만).
비슷한 프로젝트를 시작하는 저와의 완벽한 질문 타이밍!
앱에서 JS 메모리 사용량을 모니터링하려면 상위 수준의 권한이 필요하므로 정확한 방법이 없습니다.댓글에 언급된 것처럼, 모든 요소의 개수 등을 확인하는 것은 구속된 이벤트 등을 무시하기 때문에 시간 낭비가 될 것입니다.
메모리 누수가 발생하거나 사용하지 않는 요소가 지속될 경우 아키텍처 문제가 발생합니다.이벤트 핸들러 등이 사라지지 않고 닫힌 탭의 콘텐츠가 완전히 삭제되도록 하는 것이 완벽할 것입니다. 그렇게 되었다고 가정하면 브라우저에서 과도한 사용량을 시뮬레이션하고 메모리 모니터링(약: 주소 표시줄의 메모리)을 통해 결과를 추정할 수 있습니다.
보호: IE, FF, Safari에서 같은 페이지를 연다면...Chrome의 메모리는 다른 모든 브라우저에서 메모리 사용량을 보고합니다.깔끔!
서버가 해당 세션의 대역폭(데이터 전송 바이트 수)을 추적하도록 하는 것이 좋습니다.그들이 제한을 초과했을 때, ajax를 통해 데이터를 보내는 대신, 서버는 사용자에게 너무 많은 데이터를 사용했음을 알리기 위해 자바스크립트가 사용할 오류 코드를 보내야 합니다.
document.documentElement.inner라는 문서를 얻을 수 있습니다.HTML과 그 길이를 확인합니다.웹 페이지에서 사용하는 바이트 수를 알려줍니다.
일부 브라우저에서는 작동하지 않을 수 있습니다.그래서 당신은 당신의 모든 신체 요소를 거대한 디브에 넣고 그 디브에 이너 html을 호출할 수 있습니다.뭐 이런 거.<body><div id="giantDiv">...</div></body>
언급URL : https://stackoverflow.com/questions/2530228/jquery-or-javascript-to-find-memory-usage-of-page
'programing' 카테고리의 다른 글
| Ubuntu의 Oracle XE에서 새 데이터베이스 생성 (0) | 2023.09.14 |
|---|---|
| python을 사용하여 excel로 작업하는 중 오류 발생 (0) | 2023.09.14 |
| 함수와 닫힘의 균등성을 검사하려면 어떻게 해야 합니까? (0) | 2023.09.09 |
| ASP에 의해 트리거된 비동기 작업 실행.NET 웹페이지 요청 (0) | 2023.09.09 |
| MySQL에서 줄 바꿈 및 캐리지 반환(\r\n) 찾기 (0) | 2023.09.09 |