2008-11-15 5 views
0

데스크톱 응용 프로그램을 설계 할 때 응용 프로그램에서 사용해야하는 메모리 양에 대한 일반적인 규칙이 있습니까?좋은 메모리 프로파일은 무엇입니까?

중량급 애플리케이션의 경우 Firefox 또는 Google Chrome과 같이 쉽게 이해하거나 적어도 프로파일 링 할 수 있습니다. 그러나 소규모 유틸리티 또는 기간 업무 (LOB) 응용 프로그램의 경우 허용 가능한 메모리 사용량은 얼마입니까?

내가 최근에 메모리 사용량과 성능 사이의 균형을 발견했기 때문에 나는 그것에 대해 어떤 일반적인 합의가 있을까?

편집 : 플랫폼은 풍부한 인터넷 응용 프로그램을 실행할 수있는 컴퓨터가있는 사용자를위한 Windows XP입니다.

내 구체적인 트레이드 오프 문제는 많은 이미지를 메모리에 캐싱하는 것입니다. 가능한 경우 사용자의 메모리가 허용하는만큼 내 앱 캐시를 갖고 싶습니다. 지금까지 응용 프로그램이 최대 메모리 제한을 고려하여 최대 한도 인 까지 캐시 할 수 있도록했습니다..

하지만 좋은 숫자는 무엇입니까? 당신은 어떻게 생각해내는거야? 그것이 내가 요구하는 요점이다.

+0

아마 당신은 당신이 가로 건너서 특정 트레이드 오프를 게시 할 수 있습니까? –

+0

님, 감사합니다. – chakrit

답변

2

이에 대한 절대적인 대답은 없습니다. 그것은 너무 많은 변수에 달려 있습니다.

  • 어떤 장치/플랫폼 당신이 개발 : 여기

    고려에 대한 몇 가지 절충입니까?
  • 사용자가이 소프트웨어를 컴퓨터의 주요 용도로 사용하기를 기대하십니까 (예를 들어, 어떤 종류의 서버 소프트웨어를 개발중인 것일 수도 있습니다)
  • 가정 사용자는 누구입니까? 파워 유저?
  • 사용자가 보유 할 RAM 용량에 대해 현실적인 기대를하고 있습니까?
  • 사용자가 해당 컴퓨터에서도 다른 많은 소프트웨어를 사용하게 될 것을 고려하고 있습니까?

때때로 케이크를 먹을 수도 있습니다. 예를 들어 파일을 읽고 다시 쓰는 경우 전체 파일을 메모리로 읽어들이는 대신 청크로 읽을 수 있습니다. 이 경우 더 나은 메모리 사용량을 가지며 속도는 저하되지 않습니다.

필자는 반드시 더 많은 RAM을 사용하여 속도를 높이는 것이 좋습니다. 그러나 RAM 요구 사항이 타겟 고객에게 현실적 일 때만 가능합니다. 예를 들어 1GB의 RAM을 가진 가정 사용자가 프로그램을 사용하기를 원하면 600MB의 RAM을 직접 사용하지 마십시오.

이 경우 더 많은 RAM을 사용하여 속도를 높이고 코드의 다른 부분을 최적화하여 RAM을 적게 사용하는 것이 좋습니다.

편집 : 캐싱 된 이미지의 특정 상황에 대해

. 사용자가 옵션으로 수행하고자하는 캐싱의 양을 설정할 수 있도록하는 것이 가장 좋습니다. 그렇게하면 많은 RAM을 가진 사람들이 성능을 높이기 위해 그것을 높일 수 있고, RAM이 거의없는 사람들은 그것을 낮게 설정할 수 있습니다.

0

이것은 대상 PC 하드웨어에 따라 다릅니다. 응용 프로그램이 너무 많은 메모리를 사용하면 Windows 페이지가 느려질 것입니다. 테스트! 귀하의 절충안에서 두 가지 옵션을 시도해보십시오. 사용자가 사용하고 합당한 수의 다른 응용 프로그램이 열려있는 일반 시스템에서 테스트를 실행하십시오. 따라서 대부분의 사람들은 아웃룩이고 아마 인스턴스 나 2 개의 인터넷 익스플로러 (또는 당신이 선택한 메일 클라이언트/브라우저) 일 것입니다. 나는 내 애플리케이션의 사용이 다른 커스텀 애플리케이션을 돌릴 가능성이있는 조직에서 일하기 때문에 실행중인 애플리케이션으로 테스트한다. 우리는 애플리케이션이 너무 많은 메모리를 사용하고 애플리케이션을 힘들게 스위칭하므로 메모리 사용량을 줄이기 위해 애플리케이션 속도가 약간 느려지는 것으로 나타났습니다. 우리의 목표 하드웨어는 원래 공통 사양 워크 스테이션 이었기 때문에 원래 512Mb 기계였습니다. 이 응용 프로그램 때문에 여러 대의 PC를 1Gb로 업그레이드해야했습니다. 우리는 이제 약간의 RAM 사용량을 다듬었지만 VB .NET으로 작성되었으며 사용 된 메모리의 대부분이 프레임 워크 인 것처럼 보입니다. PerfMon은 프로세스가 aroung 200Mb (피크)를 사용하고 있지만 관리되는 힙은 약 2Mb에 불과하다고 말합니다!

1

이것은 비즈니스 플랫폼에 따라 결정됩니다. 필요한 메모리가 많을수록 소프트웨어를 사용할 수있는 고객이 줄어 듭니다. 몇 가지 질문 사항 : 고객 (또는 잠재 고객)이 컴퓨터에 얼마만큼 메모리를 설치 했습니까? 응용 프로그램과 동시에 실행할 다른 응용 프로그램은 무엇입니까? 응용 프로그램이 독점적으로 실행되는 것으로 가정합니까 (전체 화면 컴퓨터 게임과 같은), 아니면 주로 백그라운드에서 실행되거나 다른 응용 프로그램에서 자주 전환되는 것으로 간주되는 유틸리티입니까?

듣고는 스팀을 통해 게임을하는 사람들의 시스템에 설치된 RAM의 분포를 보여주는 설문 조사의 예는 (: Valve - Survey Summary Data 소스)입니다

  • 이하 96 MB 이상 0.01 %
  • 96 메가 127 MB 0.01 %
  • 128 MB 255 MB 0.21 %
  • 256 메가 511 메가 5.33 %
  • 512 메가 999 메가 19.81 %
  • 1 Gb 내지 1.49 Gb 30.16 %
  • 1.5 기가 기가 6.10 %
  • 2.0 기가 38.37 %

내가 (컴퓨터 게임에게) 내 도메인이 같은 설문 조사에서 그리는 것이 결론 1.99에 나는 합리적으로 거의 모든 사용자가 512MB 이상을 가지고 기대할 수있다 1GB 이상인 대다수가 있습니다. 독점적으로 운영되어야하는 컴퓨터 게임의 경우, 약 400MB의 작업 세트는 다소 안전하며 거의 아무도 제한하지 않을 것이며, 제품에 대한 중요한 부가가치를 제공한다면, 작업 세트를 갖는 의미를 가질 수 있습니다 약 800MB.

+0

주로 백그라운드에서 실행되는 유틸리티입니다. – chakrit

관련 문제