2012-04-03 29 views
6

Tôi hiện đang làm việc trên một trò chơi tàu điện ngầm cho Windows 8 sử dụng C# và SharpDX. Dự án đang diễn ra tốt đẹp, nhưng gần đây đã có một nhu cầu bắt đầu theo dõi rò rỉ bộ nhớ và tôi không thực sự chắc chắn bắt đầu từ đâu.Tìm rò rỉ bộ nhớ trong ứng dụng metro Win8 được quản lý?

Trình biên dịch bộ nhớ trong Visual Studio 11 không hoạt động cho ứng dụng metro, WinDBG dường như không kết nối được với ứng dụng metro (trừ khi tôi sử dụng không chính xác) và tôi đang gặp khó khăn tìm bất kỳ thông tin nào về việc xem xét phân bổ được quản lý trong .NET 4.5 cho tàu điện ngầm.

Có ai có kinh nghiệm với điều này không? Có một nơi tốt để bắt đầu tìm kiếm không? Có ai đã thành công với các công cụ để giúp phát hiện rò rỉ bộ nhớ trong các ứng dụng metro?

+0

Tôi sẽ không dành nhiều thời gian cho việc này. Tỷ lệ cược tốt là bản thân WinRT có rò rỉ bộ nhớ sẽ được sửa trước RTM. Bạn sẽ chỉ dành nhiều thời gian để giải quyết các vấn đề tạm thời. Cũng cần có công cụ hỗ trợ. –

+1

Bạn nên chạy điều này thông qua trình xác minh ứng dụng. Các tỷ lệ cược mà bạn có thể nhận được một ứng dụng sử dụng SlimDX được xuất bản thông qua các cửa hàng nên được, tốt, Slim. –

+0

@HansPassant - Tôi đồng ý. Anh ta có thể muốn xác minh rằng anh ta thậm chí sẽ có thể xuất bản nó lên cửa hàng, hiểu của tôi là trừ khi SharpDX chỉ sử dụng hồ sơ WinRT, cơ hội của nó được xuất bản rất mỏng. Nhìn vào trang dự án của SharpDX, danh sách mà họ liệt kê sẽ dẫn bạn tin rằng nó hỗ trợ cấu hình WinRT bằng cách sử dụng từ "Phong cách Metro" mà ngay cả từ các sản phẩm của Microsoft chỉ đơn giản là một kiểu thiết kế nhất định. Tất nhiên kể từ ngày 30 tháng 3 năm 2012, SharpDX thậm chí không hỗ trợ Windows 8 CP. –

Trả lời

2

Có vẻ như tôi thực sự có thể sử dụng WinDbg, nó không hoạt động với chế độ xâm lấn. Lỗi của tôi.

1

Tôi sẽ, ít nhất là bây giờ, giả định rằng rò rỉ bộ nhớ không phải do Metro hoặc SharpDX gây ra.

Kiểm tra này ra: Memory Leaks C#

(. Hoặc chỉ cần tìm kiếm SO cho "rò rỉ C# bộ nhớ")

Khi bạn đi qua bảng liệt kê những thứ lượm lặt từ các truy vấn liên kết/tìm kiếm trên, sau đó di chuyển kiểm tra mã liên quan đến SharpDX/Metro. Các hướng dẫn tốt nhất đến từ mẹ tôi khi tôi còn trẻ: "Dọn dẹp sau khi bạn chơi xong." Vứt bỏ các đối tượng khi bạn đang thực hiện với họ, không để lại DB, tập tin hoặc bộ nhớ suối mở lâu hơn bạn cần chúng được. Đây là nguyên nhân gây ra vấn đề rò rỉ bộ nhớ của nhiều người, bao gồm cả tôi.

+0

Tôi đã dành thời gian với các nghi phạm thông thường (suối, IDisposables, sự kiện), nhưng tôi tìm kiếm bất kỳ công cụ hoặc chức năng nào có thể cho tôi cái nhìn sâu sắc về những gì hiện đang được phân bổ. Ngay cả khi chỉ có thể nhận được một danh sách phân bổ được quản lý sẽ là một trợ giúp lớn trong việc tìm kiếm các lĩnh vực có vấn đề thực sự. –

-1

Tôi đề nghị bạn sử dụng số http://msdn.microsoft.com/en-us/magazine/jj721593.aspx này. Có rất nhiều giải thích về rò rỉ bộ nhớ.

+0

Thay vì chỉ đăng một liên kết (một nhận xét sẽ tốt hơn cho điều đó), bạn nên ít nhất chỉ ra một số điểm nổi bật của các kỹ thuật được thảo luận trong bài viết đó. – Tuxdude

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