Các công cụ, một phần của Xcode, được thiết kế chủ yếu cho các ứng dụng iOS, MacOS, WatchOS và TVOS. Mặc dù nó cực kỳ hiệu quả để phát hiện rò rỉ bộ nhớ trong các nền tảng này bằng cách sử dụng các công cụ như trình gỡ lỗi đồ thị và công cụ rò rỉ, nhưng ứng dụng trực tiếp của nó đối với các ứng dụng MVVMCROSS bị hạn chế. MVVMCROSS là một khung đa nền tảng cho phép phát triển cho nhiều nền tảng, bao gồm Android và iOS.
Tuy nhiên, nếu bạn đang phát triển ứng dụng MVVMcross cho iOS, bạn có thể sử dụng các công cụ để theo dõi rò rỉ bộ nhớ trong thời gian thực cho phần iOS của ứng dụng. Đây là cách:
Sử dụng các công cụ cho các ứng dụng mvvmcross iOS
1. Công cụ khởi chạy: Bắt đầu bằng cách mở dự án của bạn bằng XCODE và chọn Sản phẩm> Hồ sơ. Điều này sẽ ra mắt công cụ.
2. Chọn mẫu rò rỉ: Trong hộp thoại chọn mẫu, chọn mẫu rò rỉ trong phần bộ nhớ. Mẫu này được thiết kế đặc biệt để phát hiện rò rỉ bộ nhớ.
3. Chạy ứng dụng của bạn: Nhấp vào nút Ghi lại để bắt đầu định hình ứng dụng của bạn. Tương tác với ứng dụng của bạn như bình thường, đặc biệt là tập trung vào các khu vực mà bạn nghi ngờ rò rỉ bộ nhớ có thể xảy ra.
4. Phân tích kết quả: Sau khi bạn hoàn thành các tương tác của mình, hãy dừng ghi âm. Các công cụ sẽ hiển thị một biểu đồ hiển thị việc sử dụng bộ nhớ theo thời gian. Nếu có rò rỉ bộ nhớ, bạn sẽ thấy việc sử dụng bộ nhớ tăng mà không giảm tương ứng khi các đối tượng nên được giải quyết. Bên dưới biểu đồ, bạn sẽ tìm thấy một danh sách các khối bộ nhớ bị rò rỉ cùng với dấu vết ngăn xếp cho biết nơi rò rỉ được phân bổ.
5. Xác định và sửa chữa rò rỉ: Sử dụng dấu vết ngăn xếp để xác định nguồn rò rỉ trong mã của bạn. Các vấn đề phổ biến bao gồm giữ lại các chu kỳ, trong đó các đối tượng giữ các tài liệu tham khảo mạnh mẽ với nhau, ngăn chặn sự phân giải. Khắc phục những điều này liên quan đến việc phá vỡ các chu kỳ giữ lại, thường bằng cách sử dụng các tài liệu tham khảo yếu hoặc chưa được xác định.
Hạn chế cho các nền tảng không phải Ios
Đối với các ứng dụng MVVMcross nhắm mục tiêu các nền tảng khác với iOS (như Android), các công cụ không thể được sử dụng trực tiếp. Thay vào đó, bạn sẽ cần sử dụng các công cụ dành riêng cho nền tảng để phát hiện rò rỉ bộ nhớ:
- Android: Sử dụng các công cụ như bộ nhớ bộ nhớ của Android Studio hoặc các thư viện của bên thứ ba như LeakCanary.
- Các nền tảng khác: Sử dụng các công cụ hoặc thư viện định hình bộ nhớ dành riêng cho nền tảng.
Tóm lại, trong khi các công cụ có hiệu quả cao để phát hiện rò rỉ bộ nhớ trong các ứng dụng iOS, bao gồm cả các công cụ được xây dựng với MVVMCROSS cho iOS, nhưng nó không thể áp dụng cho các nền tảng không phải của Ios. Để phát triển đa nền tảng, bạn phải sử dụng các công cụ cụ thể cho từng nền tảng mục tiêu.
Trích dẫn:[1] https://www.netguru.com/blog/what-are-ios-memory-leaks-and-how-to-detect-them
.
[3] https://stackoverflow.com/questions/38592689/memory-leak-check-in-real-time-application
[4] https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/9-finding-memory-leaks-using-instruments
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-leak-because-of-not-disposed-viewmodels
[6] https://forums.ni.com/t5/LabVIEW/Get-Object-Memory-Leak/td-p/4276905
[7] https://forums.developer.apple.com/forums/thread/770061
[8] https://github.com/mvvmcross/mvvmcross/issues/2884