2011-09-12 6 views
5

Nhàn rỗi tò mò ...Tại sao Process.WorkingSet> Process.MaxWorkingSet?

Tôi đang xem xét một số các thuộc tính của quá trình hiện tại:

using(Process p = Process.GetCurrentProcess()) 
{ 
    // Inspect properties 
    // p.MaxWorkingSet = 1,413,120 
    // p.MinWorkingSet = 204,800 
    // p.WorkingSet = 54,140,928 
    // p.WorkingSet64 = 54,140,928 
} 

Từ đọc sách của tôi các tài liệu, các đặc tính này đều liên quan đến việc thiết lập kích thước làm việc tại byte, do đó tôi đã mong đợi để xem:

MinWorkingSet <= WorkingSet <= MaxWorkingSet 

Đây không phải là trường hợp, bất cứ ai có thể giải thích tại sao?

+4

Dường như tôi lớn hơn MaxWorkingSet IS. Nhìn vào dấu chấm trong WorkingSet. –

+1

@Brian, xin lỗi, khoảng thời gian đó phải là dấu phẩy, được sửa. Tôi đã tự thay thế dấu phân cách hàng nghìn địa phương bằng dấu phẩy và bỏ qua dấu phẩy đó. – Joe

+0

Không thành vấn đề và +1 cho một câu hỏi hay. –

Trả lời

2

MaxWorkingSet và MinWorkingSet là các giá trị được trả về bởi API Win32 GetProcessWorkingSetSize. Đây là những giới hạn được sử dụng bởi trình quản lý ảo sẽ được thực thi khi bộ nhớ thiếu nguồn cung cấp. Khi có đủ bộ nhớ, kích thước bộ làm việc hiện tại được phép lớn hơn giá trị trong MaxWorkingSet.

+0

Thú vị. Nếu bạn có một tài khoản MSDN nó sẽ là tốt nếu bạn có thể tại thông tin này. – Bobby

+0

@plodoc, cảm ơn, điều đó làm cho nó rõ ràng. – Joe

1

Trong khi MSDN is not reallyhelpful in this case, một cuộc điều tra nhỏ với Process Explorer mặt khác tiết lộ rằng các giá trị cho Private Memory/MaxWorkingSetShared Memory/WorkingSet làm gần chính xác phù hợp.

Điều này làm cho tôi tin (vâng, tôi thiếu bằng chứng khó) rằng MaxWorkingSet hiển thị bộ nhớ riêng trong khi WorkingSet64 hiển thị bộ nhớ hoàn chỉnh, bao gồm bộ nhớ dùng chung.

Tôi biết MSDN nói gì ... và tôi không quan tâm, tôi thấy điều gì đó khác trong Trình khám phá quy trình.

+0

Về câu cuối cùng của bạn: Có rất nhiều ví dụ - không ai trong số đó tôi có thể nhớ lại ngay bây giờ - điều đó cho thấy rằng MSDN thực sự có lỗi. Vì vậy, nếu bạn quan sát một cái gì đó mâu thuẫn với MSDN, thay đổi cao, rằng MSDN có một lỗi trong đó và không phải là quan sát của bạn là sai. –

+0

Trong trường hợp này, MSDN là chính xác :) – plodoc

+0

Khi tôi thêm các cột Bộ làm việc tối thiểu và Bộ làm việc tối đa trong Process Explorer trên Windows 2008 R2, tôi thấy tất cả quy trình ngoại trừ dwm.exe (Trình quản lý Windows Desktop đã tăng giá trị của nó) có cùng giá trị 200Kb và 1300 Kb, cũng được Joe nhìn thấy. – plodoc