2012-05-31 36 views
6

Gần đây tôi đã đọc chủ đề về sự phân mảnh bộ nhớ: How to solve Memory FragmentationWhat is memory fragmentation?Công cụ để kiểm tra phân mảnh bộ nhớ

Tôi muốn nhìn thấy một số bản đồ phân bổ bộ nhớ như tác giả trong các bài viết http://pavlovdotnet.wordpress.com/2007/11/10/memory-fragmentation/

Ông có thể khuyên bạn nên một số công cụ để có được bản đồ phân bổ bộ nhớ như vậy, vì vậy tôi có thể thấy bộ nhớ bị phân mảnh và không gian trống lớn nhất có sẵn là gì.

Tôi đang sử dụng Windows vì vậy tôi muốn các công cụ hoạt động trên hệ thống này.

Trả lời

4

Here là công cụ trực quan hóa bộ nhớ GC và sử dụng đống, cũng là mã nguồn được cung cấp. Một ứng dụng tương tự khác cũng được liên kết trong các nhận xét ở đó.

Nếu bạn cần để có thể sử dụng bộ nhớ cho một giải pháp .NET, bạn có thể kiểm tra ANTS Memory Profiler, nó có thể chạy cùng với một dự án trong Visual Studio và theo dõi các quy trình và đối tượng đang sử dụng bộ nhớ.

2

Có giải pháp gián tiếp cho vấn đề. Tôi đã phát triển ứng dụng máy chủ trong một vài năm. Ban đầu chúng tôi đang thực hiện phân bổ theo yêu cầu và kết quả là sau khi chạy trong vài tuần, hiệu suất của máy chủ bị xuống cấp. Chúng tôi đã thực hiện theo cách này -

Giả sử bạn có các lớp do người dùng định nghĩa X, Y, Z, .. mà bạn cần phân bổ từ heap khi chạy. Phân bổ n số đối tượng X khi khởi động. Đặt tất cả các đối tượng này vào danh sách hồ bơi miễn phí. Theo yêu cầu, lấy từng đối tượng của x và cung cấp cho ứng dụng của bạn. Khi sử dụng, hãy đặt nó trong danh sách hồ bơi bận rộn. Khi ứng dụng muốn phát hành nó, hãy đưa nó trở lại danh sách hồ bơi miễn phí. Theo dõi startegy này cho Y. Z, v.v.

Vì bạn đang phân bổ tất cả các đối tượng cần thiết khi khởi động và không bao giờ phát hành lại bộ nhớ hệ điều hành cho đến khi thoát chương trình, bạn sẽ không phải đối mặt với sự xuống cấp hiệu suất do phân mảnh bộ nhớ gây ra.

+0

trong khi cách giải quyết của bạn là âm thanh, dưới đây là https://msdn.microsoft.com/en-us/library/windows/desktop/aa366750(v=vs.85).aspx thay thế – ComputerSaysNo

Các vấn đề liên quan