Instrumenten, onderdeel van Xcode, is voornamelijk ontworpen voor iOS-, macOS-, WatchOS- en TVOS -applicaties. Hoewel het ongelooflijk effectief is voor het detecteren van geheugenlekken in deze platforms met behulp van tools zoals het lekken -instrument en geheugengrafiek debugger, is de directe toepassing op MVVMCross -applicaties beperkt. MVVMCross is een platformonafhankelijke framework dat ontwikkeling mogelijk maakt voor meerdere platforms, waaronder Android en iOS.
Als u echter een MVVMCross-applicatie voor iOS ontwikkelt, kunt u instrumenten gebruiken om geheugenlekken in realtime te volgen voor het iOS-gedeelte van uw app. Hier is hoe:
Instrumenten gebruiken voor iOS MVVMCross -applicaties
1. Start instrumenten: begin met het openen van uw project in Xcode en het selecteren van product> profiel. Dit zal instrumenten lanceren.
2. Kies de lekken -sjabloon: kies in het dialoogvenster Template selectie de lekkensjabloon onder het geheugengedeelte. Deze sjabloon is specifiek ontworpen om geheugenlekken te detecteren.
3. Voer uw app uit: klik op de knop Record om uw app te profileren. Interactie met uw app zoals u normaal zou doen, vooral gericht op gebieden waar u vermoedt dat geheugenlekken kunnen optreden.
4. Analyseer resultaten: Stop de opname nadat u uw interacties hebt voltooid. Instrumenten worden in de loop van de tijd een grafiek weergegeven met geheugengebruik. Als er geheugenlekken zijn, ziet u de geheugengebruik toenemen zonder overeenkomstige afname wanneer objecten moeten worden gedealloceerd. Onder de grafiek vindt u een lijst met gelekte geheugenblokken samen met stapelsporen die aangeven waar de lekken zijn toegewezen.
5. Lekken identificeren en repareren: gebruik de stapelsporen om de bron van de lekken in uw code te vinden. Gemeenschappelijke problemen omvatten het behouden van cycli, waarbij objecten sterke verwijzingen naar elkaar bevatten, waardoor deallocatie wordt voorkomen. Het repareren van deze omvat het breken van de behoudcycli, vaak door het gebruik van zwakke of niet -bezit referenties.
Beperkingen voor niet-IOS-platforms
Voor MVVMCross -applicaties die andere platforms dan iOS richten (zoals Android), kunnen instrumenten niet direct worden gebruikt. In plaats daarvan zou u platformspecifieke tools moeten gebruiken voor geheugenlekdetectie:
- Android: gebruik tools zoals de geheugenprofiler van Android Studio of bibliotheken van derden zoals Leakcanary.
- Andere platforms: gebruik platformspecifieke geheugenprofileringstools of bibliotheken.
Samenvattend, hoewel instrumenten zeer effectief zijn voor het detecteren van geheugenlekken in iOS-toepassingen, inclusief die gebouwd met MVVMCross voor iOS, is dit niet van toepassing op niet-IOS-platforms. Voor platformoverschrijdende ontwikkeling moet u tools gebruiken die specifiek zijn voor elk doelplatform.
Citaten:[1] https://www.netguru.com/blog/what-are-ios-memory-delak-and-how-to-Detect-them
[2] https://www.reddit.com/r/rust/comments/kpsgin/how_to_find_a_memory_leak_in_a_rust_program/
[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-insstrumenten
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-loak-becuse-of-not-Disponped-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