Trên máy của tôi (XP, 64) quy trình nhân viên ASP.net (w3wp.exe) luôn khởi chạy với bộ nhớ ảo 5.5GB được đặt trước. Điều này xảy ra bất kể ứng dụng web mà nó lưu trữ (nó có thể là bất cứ điều gì, ngay cả một trang web trống trong aspx).Xác định ai/dung lượng bộ nhớ ảo 5.5 GB trong w3wp.exe
Bộ nhớ ảo lớn tuổi này được dành riêng tại thời điểm quá trình bắt đầu, vì vậy đây không phải là bộ nhớ "rò rỉ" dần dần của một số loại.
Một số tìm hiểu xung quanh với windbg cho thấy bộ nhớ là câu hỏi riêng tư, dành riêng và RegionUsageIsVAD, cho biết đó có thể là tác phẩm của ai đó đang gọi VirtualAlloc. Nó cũng cho thấy rằng bộ nhớ trong câu hỏi được phân bổ/dành riêng trong 4 khối lớn của 1GB mỗi và một số nhỏ hơn một (1/4GB mỗi).
Vì vậy, tôi đoán tôi cần phải tìm ra ai đang gọi VirtualAlloc và đặt trước tất cả bộ nhớ này. Làm thế nào để làm điều đó?
Việc đính kèm trình gỡ rối vào quá trình trước khi cấp phát bộ nhớ là khó khăn, vì w3wp.exe là một quá trình được khởi chạy bởi svchost.exe (có nghĩa là, bộ lọc IIS/ASP.Net) và nếu tôi cố gắng tự khởi chạy nó để gỡ lỗi nó nó chỉ đóng cửa mà không cần tất cả đặt phòng bộ nhớ dồi dào này. Ngoài ra, các tham số dòng lệnh không hợp lệ nếu tôi sử dụng lại chúng (điều này có ý nghĩa vì nó là một đường ống được tạo bởi quá trình gọi).
Tôi có thể đính kèm nó vào quá trình sau khi thực tế (đó là cách tôi tìm thấy vùng bộ nhớ được đề cập), nhưng tôi không chắc là có thể vào thời điểm đó để xác định ai đã phân bổ cái gì.
Tôi chỉ muốn nói "Ôi Chúa ơi" GeorgeTakei>! –
StingyJack
Đó là lần sử dụng đầu tiên có liên quan của thẻ mới mà tôi đã xem (tất cả các trang Heroes trên NBC.com)! –
Tôi thấy cùng một hành vi trên Server 2008, IIS7 –