최근에 컴퓨터를 미래에 대비하기 위해 원래 4GB 메모리 위에 추가했습니다. 총 메모리를 8GB로 가져 왔으며, 필요할 때도 눈에 띄는 속도 변화가 없었습니다. 작업 관리자를 조사한 결과 크롬과 파이어 폭스가 각각 20 개의 탭으로 열려 있어도 컴퓨터가 4GB의 메모리를 사용하지 않는 것을 알 수있었습니다.
조사 후 모든 사람들이 제안한 모든 것은 사용 가능한 메모리 양을 확인하는 것이 었습니다. 이상하게도 8GB의 메모리가 있으며 7.74GB를 사용할 수 있다고 말합니다.
내 HP Pavilion g7-1075dx의 사양은 여기에서 찾을 수 있습니다.
AMD Phenom II가 장착 된 Windows 7 Home Premium 64 비트 노트북 PC입니다.
내 주요 질문은 내 64 비트 컴퓨터의 경우 7 개 이상을 사용할 수 있는데도 왜 컴퓨터에서 4GB 이상의 메모리를 사용하지 않습니까?
편집 : 도움이되면 Resource Monitor는 다른 모든 RAM을 “Standby”로 설명합니다.
답변
도움이되는 경우 리소스 모니터는 다른 모든 RAM을 “대기”
“대기”RAM 이 사용 중입니다. 페이지 캐시로 사용되고 있으며 (최근에 모든 프로세스 작업 세트에서 손실 된 페이지를 보유합니다. 즉, 디스크로 이동하지 않고도 페이지 결함을 해결할 수 있음) SuperFetch의 사전 파일 캐시에 사용됩니다.
대기 페이지를 다른 용도로 할당하기 전에 디스크에 쓸 필요가 없기 때문에 “사용 가능”한 것으로 간주됩니다. 프로세스가 페이지 오류 칠 때와 같은 않는 디스크에서 읽을 필요는 새로운 물리적 페이지 (들) 해당 프로세스에 할당해야하며, 필요한 경우 이러한 대기 목록에서 취할 수 있습니다. (이것은이 목적을위한 페이지를 찾기위한 첫 번째 선택이 아니며, 무료이고 그다음 제로 페이지 목록입니다.)
즉, 시스템이 정상적으로 작동하고 있습니다.
Windows 내부testlimit
실험에서 사용되는 도구 중 하나 인 명령 줄 도구를 사용하여 시스템에서 더 많은 RAM을 “사용 중”상태로 만들 수 있습니다 . 일반적인 sysinternals 도구의 일부는 아니지만 관련 도구입니다. 찾을 여기 시스 인 터널 사이트에서. 다운로드는 testlimit.exe 및 testlimit64.exe의 두 가지 버전이 포함 된 zip 파일입니다. 둘 다 큰 주소를 인식하므로 32 비트 버전은 / 3GB로 부팅 된 32 비트 시스템에서 최대 3GiB, 64 비트 시스템에서 최대 4GiB를 할당 할 수 있습니다.
c:\> testlimit -?
도움을줍니다.
c:\> testlimit -d 4 -c 512
는 각각 4MiB의 512 개 할당으로 2GiB의 프로세스 전용 가상 주소 공간을 할당하려고 시도합니다. 64 비트 컴퓨터에서 제대로 작동합니다. / 3GB로 부팅 되지 않은 32 비트 시스템 (대부분은 아님)에서 약간의 초기 b / c 오류가 발생할 수 있습니다 (프로그램 자체, 모든 DLL 등). 프로그램이 할당 할 수있는 전체 2GiB가 없습니다.
두 경우 모두 “사용 가능한”RAM이 줄어들고 “사용 중”RAM이 증가 하지만 OS가 프로세스 개인 작업 세트에 2 GiB를 모두 남겨 둘 것이라는 보장이 없기 때문에 반드시 2 GiB 가치 는 아닙니다. 단기적으로는 그렇게해도 OS가 “음, 실제로는 아무 것도하지 않고 다른 프로세스는 더 많은 것을 필요로한다”고 결정할 때 프로세스 작업 세트가 나중에 줄어드는 것을 볼 수 있습니다.
할당 “청크”의 크기를 너무 크게하여 청크 수를 줄이십시오. 따라서 각 할당이 사실상 연속적이어야하므로 더 빨리 실패 할 수 있습니다. 예를 들어 4GiB 주소 공간에서 7 개의 512MiB 청크를 찾으려고하면 실패 할 수 있습니다.
d (irty) 대신 l (eak) 옵션을 사용하면 프로그램은 가상 공간을 할당하지만 참조하지는 않습니다. 이 것 없다 “가능”RAM의 모든 상당한 감소를 초래한다.
(d (irty) 옵션은 x86 / x64 페이지 테이블 항목의 “더티 페이지 비트”에서 이름을 가져옵니다. 이는 해당 가상 페이지에 “수정”스타일 피연산자로 액세스 할 때 설정되며 이는 페이지의 내용이 이것은 프로세스 작업 세트에서 페이지를 제거해야하는 경우 페이지를 다른 곳에 사용할 수 있기 전에 해당 컨텐츠를 어딘가에 저장해야한다는 Windows의 표시입니다. “더티 (dirty)”비트가 설정된 페이지는 제거 직후 “수정 된 페이지 목록”(Windows는 해당 백업을 해당 백업 저장소에 씁니다.)
위에서 설명한대로 (이 옵션이 상당한 양의 RAM을 사용하지 않더라도 l (eak) 옵션에 대해서도) 이러한 테스트가 작동하려면 충분한 “커밋”이 필요합니다. 특히, 테스트를 시작하기 전에 “커밋 한도”는 “커밋 요금”보다 2GiB 이상 (또는 할당하는 금액)보다 높아야합니다. 이는 d (irty)뿐만 아니라 l (eak) 옵션을 사용하는 경우에도 적용됩니다. 이 한계에 도달하면 “시스템 메모리 부족”팝업 또는 이와 유사한 팝업이 표시됩니다. 물론 치료법은 더 많은 RAM을 추가하거나 페이지 파일 설정을 높이는 것입니다.
답변
실제로 RAM 사용을 제한하도록 Windows를 구성 할 수 있습니다. 랩톱에서이 설정을 어떻게 또는 누가 구성했는지는 모르지만 확인해야합니다.
이 기사 에는 자세한 내용이 있지만 위의 대화 상자로 이동하는 것은 쉽습니다.
답변
SysInternals RAMMap 을 사용 하여 PC가 실제 RAM으로 수행하는 작업을 정확하게 볼 수 있습니다 . 작업 관리자 또는 프로세스 탐색기와 같은 다른 도구는 주로 가상 메모리에 중점을 두며이 상황에 가장 적합한 도구는 아닙니다.
“카운트 사용”탭에서 많은 응용 프로그램을 열지 않은 동안 많은 부분이 사용되지 않는 것을 볼 수 있습니다.
그렇다고 PC가이 상태를 유지하지는 않습니다. 몇 개의 프로그램을 열면 메모리가 사용됩니다.
답변
주제에 관한 아주 좋은 기사 에서 인용 :
더 많은 메모리가 실제로 [컴퓨터의] 처리 속도를 증가 시키지는 않습니다. 더 빠른 CPU만이 그렇게 할 수 있습니다.
그리고 내 경험상 그것은 일반적으로 사실입니다. 동시에 많은 프로그램을 실행 하고 있고 해당 프로그램에 상당한 RAM 요구 사항이없는 한 4GB 이상의 RAM을 사용하면 실제로 얻을 수있는 이점이 거의 없습니다.
사람들은 4GB가 많은 RAM의 지옥이라는 것을 깨닫지 못하는 것 같습니다. Windows가 그 이상을 사용하게하려면 노력이 필요합니다. 많은 다른 앱 을 열어야 하고, 그 앱에서 큰 파일을 열어야합니다. 몇 개의 YouTube 동영상 탭을 던져서> 4GB 이상의 사용률이 표시 될 수 있습니다.
답변
Windows는 페이징 메모리와 같은 영리한 작업을 수행합니다. 그것은 당신이하고있는 대부분의 작업을 불필요하게보고 페이지 파일에 많은 양의 물건을 덤프하기로 결정하여 모든 RAM을 사용하지 않는 것처럼 보이게 할 수 있습니다. 페이징을 비활성화하여이 이론을 테스트 할 수 있지만 영구적으로 구성해야하는 것은 아닙니다. 인터넷에는이를위한 많은 튜토리얼이 있습니다. 24GB 및 64GB 컴퓨터에서도 수행되는 작업 중 하나는 페이징 규칙이 약 50 %, 80 % 및 90 % 소비에 도달 할 때 훨씬 엄격하게 만드는 것입니다 (이 수치는 근사치 임). 각 단계에서 많은 양의 페이지 파일에 덤프되는 것을 알았습니다.
재미있는 일은 다음과 같습니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PAGE_SZ (1<<12)
int main() {
int i;
int gb = 2; // memory to consume in GB
for (i = 0; i < ((unsigned long)gb<<30)/PAGE_SZ ; ++i) {
void *m = malloc(PAGE_SZ);
if (!m)
break;
memset(m, 0, 1);
}
printf("allocated %lu MB\n", ((unsigned long)i*PAGE_SZ)>>20);
getchar();
return 0;
}
그것은 C 코드입니다. GCC 또는 일부 컴파일러를 가져 와서 exe로 만들고 메모리 소비량을 늘리십시오. 2GB 이상의 메모리를 사용하려면 64 비트 프로세스로 컴파일하고 실행해야합니다. 당신이 그런 종류의 일에 빠져 있다면 흥미로운 실험이 될 수 있습니다.
편집 : 프로그램이 이것으로 죽지 않을 것이라는 점을 알고 싶었습니다. 다른 코드가 작동했는지 확실하지 않기 때문에 이전 코드에서 메모리를 편집했습니다 (메모리가 페이징되어 메모리가 소비되지 않음, lol). 새 코드에는 한 줄이 포함되어 있습니다. int gb = 2; // memory to consume in GB
2를 변경하면 프로그램이 사용해야하는 메모리 양이 조정되므로 원하는만큼 사용하도록 설정할 수 있습니다. 시스템에서 설정 한 것보다 높은 값으로 설정하면 시스템이 중단 될 수 있습니다 (테스트되지 않았으므로주의해서 사용하십시오)
답변
32 비트 프로그램을 사용하여 컴퓨터의 실행 속도를 테스트하고 있습니까? 그렇다면 더 많은 RAM이 있어도 32 비트 주소는 4GB의 RAM 만 가리킬 수 있습니다. 유용한 결과를 얻으려면 64 비트 프로그램을 사용하여 테스트를 반복하고 4GB의 RAM이있는 속도와 8GB의 RAM이있는 속도로 속도를 확인해야합니다. 또한 4GB 이상의 메모리를 사용하여 더 빠르게 실행할 수있는 64 비트 프로그램이어야합니다. 프로그램이 32 비트인지 확인하려면 프로그램을 시작하고 그대로두고 Windows 작업 관리자를 시작하고 프로세스를 클릭 한 다음 관심있는 프로그램을 찾을 때까지 아래로 스크롤하십시오. 이미지 이름 열의 프로그램 이름 뒤에 공백이 있고 * 32이면 32 비트 프로그램입니다.
답변
가져 오기 프로세스 탐색기 시스 인 터널에서 (procexp을) . 리소스 그래프를 가지고 있으며, 프로세스 별 메모리 사용량을 보여줄 수 있습니다.
당신은 당신이 단순히 모든 걸 포기하고 사용하지 않을 있는지 확인하기 위해, 가상 spqce 사용에 대 실제 RAM의 사용을 볼 수 있습니다 또는 당신이 더 필요한 것 같다하지만, 실제 사용을 제한하고 있습니다.
대부분의 일상적인 프로그램 은 수요를 낮게 유지 하는 다른 작업 세트 크기를 사용합니다 . 프로그램이 많은 메모리를 할당하면 실제로 모든 메모리를 동시에 사용 하지는 않습니다 …
Windows는 프로그램에서 사용 가능한 페이지로 페이지를 공격적으로 이동 하지만 페이지 오류가 발생하면 스왑 파일에서로드하지 않고 목록에서 페이지를 가져옵니다. 대기는 다음을 포함 할 수 있습니다. 도구마다 다른 방식으로 레이블이 다릅니다.
최소한이 테스트에서는 스왑 파일을 해제 해 볼 수 있습니다. 그러면 데이터 메모리가 실제로 사용됩니다. procexp가 그것을 명확하게 알기에 충분할지라도.