Tại sao tổng mức sử dụng bộ nhớ được báo cáo bởi Trình quản lý tác vụ Windows cao hơn nhiều so với tổng mức sử dụng bộ nhớ của tất cả các quy trình? [bản sao]


98

Trình quản lý tác vụ cho thấy tổng mức sử dụng bộ nhớ của tôi ở mức 90% trong tổng số 6 GB của tôi, nhưng không có quá trình đơn lẻ nào sử dụng hơn 250 MB RAM và tổng mức sử dụng RAM của tất cả các quy trình đang chạy là dưới 2 GB. Tôi đã thử:

  • Nhìn vào các số trong cột "Bộ nhớ" trên tab "Quy trình" của Trình quản lý tác vụ Windows 8.
  • Nhìn vào các cột "Bộ làm việc", "Bộ làm việc riêng", "Bộ làm việc chung" và "Kích thước cam kết" trên tab "Chi tiết" của Trình quản lý tác vụ.
  • Nhìn vào các cột liên quan đến bộ nhớ tương tự trong Process Explorer.
  • Tôi đã thử chạy Sysiternals RAMMap, nhưng trong khi tôi gặp khủng hoảng bộ nhớ thấp, nó bị sập khi khởi chạy. Khi tôi giải quyết được sự cố, RAMMap chạy bình thường, nhưng tại thời điểm đó thì đã quá muộn.

Tất cả cho thấy một lượng bộ nhớ khá nhỏ đang được sử dụng.

Có rất nhiều người hỏi các biến thể của câu hỏi này, với các phiên bản khác nhau của cửa sổ, trên Internet. Một số người trong số họ quản lý để giải quyết vấn đề bộ nhớ thấp của họ, thường bằng cách cài đặt lại phần mềm; đôi khi bằng cách cài đặt lại các cửa sổ từ đầu. Tôi đang tìm kiếm một câu trả lời cho các câu hỏi chung mà tất cả những điều này chia sẻ, và dường như không bao giờ được trả lời ở nơi khác:

  1. Tại sao tổng bộ nhớ đã sử dụng cao hơn nhiều so với bộ nhớ được sử dụng bởi tất cả các quy trình được liệt kê, bất kể tôi cố gắng đếm chúng như thế nào?
  2. Làm thế nào các cửa sổ có thể "biết" rằng bộ nhớ được sử dụng mà không biết chương trình nào đang sử dụng nó?
  3. Những quá trình có thể có thể sử dụng hết bộ nhớ nhưng không hiển thị trong danh sách?
  4. Có phần mềm nào ngoài đó có thể cung cấp thêm thông tin về bộ nhớ đã sử dụng không?

Chi tiết cụ thể cho vấn đề của riêng tôi: Kể từ khi nâng cấp lên Windows 8.1, Sự cố xảy ra ngay khi tôi đăng nhập. Tôi hết bộ nhớ ngay khi chạy bất kỳ chương trình nào. Tôi nhận thấy trong Process Explorer rằng một số phiên bản của iexplore.exe đang chạy, dường như tự động bắt đầu. Một trường hợp cụ thể chỉ sử dụng một vài MB RAM, nhưng cho thấy hàng trăm triệu lỗi trang. Trong một ý thích bất chợt, tôi đã giết quá trình cụ thể đó và việc sử dụng bộ nhớ ngay lập tức giảm 70%.

Dẫn đến một câu hỏi cụ thể:

  • Làm thế nào có thể giết chết một tiến trình được cho là chỉ sử dụng một vài MB giải phóng vài GB?

Và một câu hỏi (có lẽ khó):

  • Không cài đặt lại Windows, làm thế nào tôi có thể tránh phải trải qua điều này mỗi khi tôi khởi động lại máy tính?

3
bộ nhớ kernel cũng được tính vào việc sử dụng. Đăng ảnh của RAMMAp: blog.technet.com/b/askperf/archive/2010/08/13/iêu
magicandre1981

2
Tôi nghĩ rằng câu hỏi nên có tiêu đề "Tại sao tôi hết bộ nhớ."
Surfasb

Câu hỏi này là không thể trả lời mà không có chi tiết cụ thể. Liệt kê các chương trình được cài đặt. Hoặc tốt hơn, một đống các quy trình đang chạy từ Performance Monitor.
Surfasb

1
Bạn đang thực sự tắt / khởi động lại máy tính hoàn toàn hay bạn sử dụng tắt máy lai (mặc định trong Windows 8)? Sau khi chuyển sang Windows 8 tôi gặp vấn đề tương tự. Tôi giả sử một trình điều khiển đã lấy ngày càng nhiều RAM vật lý của tôi và không trả lại, ngay cả sau khi tắt và bật máy tính. Trong một vài tuần, nó tích lũy đến vài gigabyte. Vì vậy, bây giờ cứ sau vài ngày tôi lại nhấp vào "khởi động lại" hoặc giữ shift trong khi nhấp vào "tắt" để thực sự tắt PC.
Robert

2
Trong trường hợp của tôi, đó là bộ nhớ "Khóa trình điều khiển", được Hyper-V dành riêng vì đã bật "Bộ nhớ động". Tôi đã phải dừng tất cả các máy ảo, tắt cài đặt và khởi động lại chúng. Cảm ơn đề xuất RAMMap.
Dagelf

Câu trả lời:


7

Nhân tiện, bạn nên cố gắng không sử dụng thuật ngữ "bộ nhớ". Nó tạo ra rất nhiều nhầm lẫn. Nếu bạn có nghĩa là bộ nhớ vật lý, hãy nói "bộ nhớ vật lý" hoặc "RAM". Nếu bạn có nghĩa là bộ nhớ ảo, hãy nói như vậy. Nếu bạn có nghĩa là cửa hàng sao lưu, nói như vậy.

Tại sao tổng bộ nhớ đã sử dụng cao hơn nhiều so với bộ nhớ được sử dụng bởi tất cả các quy trình được liệt kê, bất kể tôi cố gắng đếm chúng như thế nào?

Bởi vì hệ điều hành không lãng phí bộ nhớ vật lý (RAM) trừ khi không có lựa chọn nào khác.

Làm thế nào các cửa sổ có thể "biết" rằng bộ nhớ được sử dụng mà không biết chương trình nào đang sử dụng nó?

Bởi vì không có chương trình nào đang sử dụng nó. Ví dụ, xem xét bộ nhớ chứa mã cho một chương trình vừa kết thúc. Không có chương trình đang sử dụng nó. Nhưng bộ nhớ đó được sử dụng, vì nó không miễn phí và chứa dữ liệu có thể hữu ích (trong trường hợp chương trình chạy lại).

Những quá trình có thể có thể sử dụng hết bộ nhớ nhưng bây giờ hiển thị trong danh sách?

Nó không được sử dụng bởi các quy trình.

Có phần mềm nào ngoài đó có thể cung cấp thêm thông tin về bộ nhớ đã sử dụng không?

RAMMap có thể làm điều này.

Chỉ có hai khả năng, RAM có thể được sử dụng hoặc nó có thể bị lãng phí. Rõ ràng, đầu tiên là tốt hơn. Mọi bộ nhớ trống đều bị lãng phí mãi mãi - một máy 4GB không thể sử dụng 2GB ngay hôm nay để sử dụng 6GB vào ngày mai. Nếu bạn đang nghĩ "Tôi muốn nó miễn phí ngay bây giờ để tôi có thể sử dụng nó sau", hãy quên điều đó đi. Bạn có thể sử dụng nó bây giờ sử dụng nó sau.

Làm thế nào có thể giết chết một tiến trình được cho là chỉ sử dụng một vài MB giải phóng vài GB?

Bạn đang chạy chậm trên cửa hàng sao lưu, không phải bộ nhớ vật lý. Bạn có nhiều bộ nhớ vật lý miễn phí nhưng không đủ kho lưu trữ cho HĐH để tiếp tục phân bổ bộ nhớ ảo có thể yêu cầu sao lưu.

Quá trình này chỉ sử dụng một vài MB bộ nhớ vật lý, nhưng HĐH có thể phải dự trữ vài GB bộ nhớ ảo được hỗ trợ cho nó. Ví dụ: giả sử một quy trình tạo ánh xạ bộ nhớ riêng, có thể ghi của tệp 2GB. HĐH phải dự trữ 2GB bộ nhớ ảo được hỗ trợ cho quá trình, bởi vì nó có thể ghi vào từng byte của ánh xạ đó. Ngoài ra, nó có thể không bao giờ viết cho bất kỳ trong số họ. Đây là lý do tại sao bạn cần một tệp hoán trang có kích thước tốt.

Các hệ điều hành hiện đại viết rất nhiều kiểm tra (cửa hàng sao lưu hứa hẹn) sẽ không bao giờ được đổi thành tiền mặt (yêu cầu RAM). Bạn không thể tiếp tục viết séc (cửa hàng sao lưu hứa hẹn) ngay cả khi bạn có nhiều tiền trong ngân hàng (RAM miễn phí) nếu bạn đã viết một loạt séc lớn có thể hoặc không thể nhận được tiền mặt (hứa như nhiều cửa hàng sao lưu Như bạn co thôi). Các tệp hoán trang thêm kho lưu trữ sao lưu, cho phép HĐH tiếp tục viết séc.


14
Tái bút: Tôi đang sử dụng từ "bộ nhớ" không phải vì tôi không biết sự khác biệt giữa RAM và VM, mà bởi vì máy tính của tôi chỉ nói với tôi rằng nó hết "bộ nhớ" mà không cung cấp cho tôi bất kỳ thông tin nào thực sự có nghĩa. (Tôi cho rằng nó có nghĩa là RAM, vì những lý do tôi chỉ định trong nhận xét trước, nhưng tôi không chắc chắn.) Tôi muốn bạn sử dụng vocab thực sự (mà tôi có thể tra cứu nếu cần thiết) hơn là các ẩn dụ tài chính phức tạp :)
Josh

91
-1 vì sau khi đọc câu trả lời và tất cả các nhận xét, vẫn chưa rõ lý do tại sao tổng bộ nhớ đã sử dụng cao hơn nhiều so với bộ nhớ được sử dụng bởi tất cả các quy trình được liệt kê.
Bennett McElwee

6
Thuật ngữ đó, trong đó bộ nhớ được "sử dụng" mặc dù không có chương trình nào sử dụng nó, hoàn toàn không giống với nghĩa thông thường của các từ như "được sử dụng" và "miễn phí" - có lẽ đó là thuật ngữ của Microsoft, không phải của bạn. Dù sao, giả sử 50% RAM hiện đang được sử dụng bởi các chương trình đang chạy và 25% không được sử dụng bởi bất kỳ chương trình đang chạy nào nhưng có chứa dữ liệu có thể hữu ích trong tương lai nhưng cũng có thể bị loại bỏ. Thêm những thứ đó lại với nhau và hiển thị "Bộ nhớ: 75%" không có thông tin hữu ích nào cho người dùng. Tôi nghĩ đó là nơi mà sự nhầm lẫn phổ biến đến từ.
Bennett McElwee

2
@BennettMcElwee Không có cách nào tốt để giảm mức sử dụng bộ nhớ xuống một con số đơn giản, nhưng người dùng khăng khăng đòi nó. Điều này đặt các nhà phát triển vào một vị trí không thoải mái - họ có thể cung cấp một số không phải lúc nào cũng hữu ích hoặc không cung cấp số. Hầu hết các nhà phát triển hệ điều hành và GUI chọn tùy chọn đầu tiên - họ cung cấp một số dẫn đến nhiều nhầm lẫn. Nếu câu hỏi của bạn là "nhiều RAM hơn có làm cho hệ thống của tôi hoạt động tốt hơn không", thì câu trả lời là - rất khó để nói, ngay cả đối với các chuyên gia.
David Schwartz

2
@DavidSchwartz Câu trả lời của bạn không giải thích như vậy, nó chỉ đơn giản nói lên điều đó. Bạn có thể cung cấp bất kỳ liên kết để sao lưu yêu cầu cụ thể lên? Tôi đang diễn giải "Bộ nhớ vật lý XX%" có nghĩa là XX% RAM được cài đặt vật lý hiện đang được sử dụng và không có sẵn cho các quy trình khác. Tôi tin rằng tôi được xác thực bởi thực tế là trên 90% hệ thống dễ bị khóa và khi các ứng dụng cố gắng phân bổ bộ nhớ vượt quá 100%, chúng bị sập hoàn toàn. Theo kinh nghiệm của tôi, đây không phải là chế độ tiêu chuẩn nơi hầu hết các hệ thống hoạt động.
John Neuhaus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.