2011-07-06 12 views
-1

마우스 클릭 또는 화면 터치에 너무 많은 실제 메모리를 사용하는 응용 프로그램을 만들었습니다. 응용 프로그램의 코드는 수천 줄로되어 있으며 C++로 개발되었습니다.메모리 문제를 해결하는 방법

지금까지 우리의 접근 방식은 응용 프로그램을 최소화하는 것이 메모리를 해제하는 것입니다. 그러나이 접근법은 결과가 있습니다. 그래서 우리는 문제를 해결할 다른 방법을 찾고 있습니다. 이 응용 프로그램은 전체 화면 모드로 실행됩니다.

+2

기본적으로 질문은 "우리 애플리케이션에 메모리 누수가 있습니다. 어디에 있습니까?" – Shirik

+0

무엇을 의미합니까? 그리고 메모리가 누출되는 영역을 알고 있다면 도움을 요청해서는 안됩니다. 그래서 대체 솔루션이 필요하다고 언급했습니다. – Ricky

+0

나는 여기에 누수가 있다는 진술을 보지 못했고, 설계가 변경 될 가능성이있는 공격적인 배고픈 앱을 보지 못했다. ** 누수가 **있는 경우 완전히 다른 이야기입니다. 버그이며 버그를 찾기위한 전략이 필요합니다. – djna

답변

4

어려운 상황에 처해 있습니다. 개발의 후반 단계에서 이런 종류의 문제를 발견하는 것은 불행합니다. 근본적인 재 설계가 필요합니다.

사용자 이벤트에 대한 응답으로 일부 특정 코드 경로가 메모리가 매우 부족하다고 추론합니다. 무슨 일이 일어나고 있는지, 그리고 일을 개선하는 최선의 방법을 정확히 이해해야합니다. 우리는 훨씬 더 자세한 내용 없이는 그걸 도울 수 없습니다. 그러나 예전에 보았던 예는 일부 데이터베이스에서 전체 데이터로드를 가져 와서 메모리에 모두 유지하는 것입니까? 항상 모든 데이터를 필요로합니까? 더 많은 쿼리를 데이터베이스에로드 할 수 있습니까?

"너무 많은"메모리의 의미를 알아야합니다. 당신은 너무 작은 기계를 목표로하고 있습니까? 아마도 더 많은 메모리에 수십 파운드를 튀기는 일은 쿼트를 깡통 냄비에 넣는 많은 개발자들의 시절을 보내는 것보다 저렴합니다. 응답

편집

는 언급합니다 :

확인은 다음이 누출 같은 소리 않습니다. 메모리를 할당하는 장소를 식별 할 수 있어야합니다. 쌍을 이루는 자유가있는 일종의 대칭이 있어야합니다. 할당을 확인하는 것부터 시작해서, 무언가가 2MB를 가볍게 두드리는 것부터 시작해서 찾을 수 있어야합니다. 그런 다음 화면이 표시되거나 사용자 세션이 끝날 때와 같이 메모리를 해제해야하는시기를 이해하십시오. 그런 일이 일어나지 않는 이유를 알아보십시오. 메모리 관리에 대한 전반적인 전략을 살펴볼 필요가 있습니다. 스마트 포인터? 집을 지키는 매니저와 같은 종류의 직원이 있습니까? 전반적으로 자원 확보 및 배포에 대한 명확한 설계 철학이 필요합니다. 기존 앱에 추가하기가 어렵 기 때문에 내 동정심을 나타냅니다.

+0

답장을 보내 주셔서 감사합니다. 실제로 시스템의 클라이언트 측에 데이터베이스가 없습니다. 전체 데이터베이스는 서버 측에 있습니다. 우리 회사는 ATM 기계 생산 (하드웨어는 물론 소프트웨어)에 있습니다. 따라서 기계는 연중 무휴로 작동해야합니다. 고객이 거래를 위해 내린 클릭은 증가하는 메모리의 원인입니다. 메모리 증가 속도는 4click 당 2MB입니다. 특정 양의 클릭 후 응용 프로그램이 멈추거나 충돌합니다. 따라서 실제 메모리를 늘리는 것은 실현 가능한 솔루션이 아닙니다. – Ricky

+0

도움에 감사드립니다. 나는 분명히 내 팀과 함께 당신의 제안을 시도 할 것입니다. – Ricky

관련 문제