Mobile Application planning, development, testing and deployment go well as per the customer estimation but after a while the client was clamoring that the app is getting slower and slower when it was continuously being used up to the point where it will just crash suddenly but most of the developer unaware why it’s like this. In this article, you are going to learn how to use prevent memory leak and profiler in Xamairn Application.
Garbage Collection:
We all know that in the .NET world we have a very good friend called Garbage Collector. Basically, it is responsible on freeing up the used memory. As simple as it sounds, whether you are in a Desktop, Web or especially mobile where there are two worlds one is Managed and the other one is the native part which at times Garbage Collection is not enough to reclaim those used memories the cause of the slowdown Mobile app is due to Memory Leaks.
Beware of common memory leak sources:
You do incorrect memory management wherein an object is stored in memory but cannot be accessed by the running code, it’s always causing a memory leak in mobile application. We all Knows what we can’t do but still we are doing as like below image, Same in Mobile Development also we all knows what can’t do, but still we are doing same mistake .
I suggest to be extra careful when using below C# feature, and proactively check for memory leaks with techniques like the last best practice.
- Events, delegates or Messaging Centers in .NET are notorious for causing memory leaks. You can innocently subscribe to an event, causing a damaging memory leak without even suspecting.
- Custom control and Unknown Nuget package are event registered, such as Loaded, will not be unloaded until all events are unregistered. Always remember to
unregister your events when you don't need them anymore and we are not sure all the objects or disposed. - Images
is a classical .net GC-Java GC problem when GC isn't aware of image size and won't release reference unless it is Disposed. - Static variables, collections, and static events in-particular should always look suspicious. Remember that all static variables are GC Roots, so they are never collected by the GC.
- Caching functionality in mobile apps is necessary, any type of caching mechanism can easily cause memory leaks. By storing cache information in-memory, eventually, it will fill up and cause an OutOfMemory exception.
- Bindings can be dangerous. The rule of thumb is to always bind to a DependencyObject or to
a INotifyPropertyChanged object. When you fail to do so, Xamarin will create a strong reference to your binding source (meaning the ViewModel) from a static variable, causing a memory leak - Threads that never terminate – The Live Stack of each of your threads is considered a GC Root. This means that until a thread terminates, any references from its variables on the Stack will not be collected by the GC. This includes Timers as well. If your Timer’s Tick Handler is a method, then the method’s object is considered referenced and will not be collected.
Preventing Memory Leaks:
Using Statement:
Dispose pattern:
You implement a Dispose method to release unmanaged resources used by your application. The .NET garbage collector does not allocate or release unmanaged memory. The Dispose method performs all object cleanup, so the garbage collector no longer needs to call the objects' Object. Finalize override . Learn more MSDN portal .
Test for memory leaks:
It’s a great practice to proactively test for memory leaks. And it’s not that hard. Here’s a short pattern you can use in the unit testing project.
Getting Started Profiling:
The Xamarin Profiler has many features Allocation, Cycles, Data presented on each screen and Time profiler . It’s a graphical interface for the Mono log profiler , and supports profiling for following platform in Windows and mac machine.
- Android, iOS,
tvOS , and Mac applications on Mac - Android, iOS, and
tvOS applications on Windows.
In this section, will learn common profiling scenarios and analyze and optimize iOS and Android applications.
Prerequisites:
We need Visual Studio Enterprise subscriber to unlock Profiler feature in either Visual Studio Enterprise on Windows or Visual Studio for Mac on a Mac. Download install following package in your mac or windows machine.
After successful installation, let get satrt use Profiling in Xamarin iOS and android application. Integrate Profiling is very simple steps, you need changes Project Property options in iOS and Android Project.
Create new Xamairn Forms project using Visual Studio and Select iOS and Android platform is supported and follow below two steps for enabling the profiling in iOS and Android Project.
Android:
In Android Project, Right click on project > Select property > Select “Android Options” > Select options “Enable developer instrumentation”.
iOS :
In iOS Project, Right click on Project > Select Property > Select “iOS Debug” Options and check the check box “Enable Profiling”.
Start the Xamarin Profiler:
Step 1: Build and run the application in iOS or Android.
Step 2: In Visual Studio menu , Select Analyze or Tools main menu > Select Xamarin Profiler and open the Profiler and make sure before open profiler , the application needs to be built at least once in order to start a profiling session.
The Xamarin Profiler comes with following instruments :
- All Instruments
- Allocations.
- Time Profiler.
Once you have selected a Allocations options and you can also configure some options of how the memory profiling will proceed. You can either customize the frames, frequency or either select from the presets as shown below image.
Once you have clicked the Start Profiling button it will automatically launch your selected application on the selected device and you will be greeted with this window
In that above image denoted number with green marked and detail info below
- No 1 - Represents the actual graph of the Memory consumption with respect to time.
- No 2 - Represents the different data categorized on your selected tab.
- No 3 -Represents the information (Object name, count, size) displayed based on the selected tab.
- No 4 - Represent the real time display of information based on the current snapshot.
- No 5 - Represents the Selected device and the Application that is currently running.
Snapshots:
Time Profiler
The Time Profiler instrument measures exactly how much time is spent in each method of an application. The application is paused at regular intervals and a stack trace is run on each active thread. And Call Tree options will show amount of time spent in each method.
I hope you enjoyed for learning profiling and prevent memory leak issue. Let me state that Profilers are not only for memory leaks but also can be used in code optimization. Finally moving forward maybe you can also adapt or put in your development routine the profiling of your mobile applications.
Summary
I hope this article gave you some value to you, let we take a new year’s resolution is better memory management while doing C# programing. Please leave your feedback/query using the comments box, and if you like this article, please share it with your friends
Nice article i was really impressed by seeing this blog, it was very interesting and it is very useful for me.also the information which you have mentioned here is correct and impressive. Really appreciate.
ReplyDeleteHire Xamarin Developer
Xamarin Development Company
I really appreciate your knowledge and writing style! Thanks for sharing useful information. 🙂
ReplyDeletehire-best-xamarin-developers.com is completely offshore IT company in Indore India
Thanks to share this eye opening information as you know that In this modern era, mobile app development has become an asset for every businesses to take their organization to the next level.
ReplyDeleteIn this way xamarin app development is a potential way to create actionable mobile application.
thanks for sharinf wonderful information. guys you can find some more information related to React Native vs Xamarin
ReplyDeletePublish Research Paper: Authors should submit the manuscript/paper that has been attentively proof-read and brilliance. Authors are mandatory to refer to the UIJRT manuscript/paper template format. This will assure fast processing and publication. Through E-mail acceptance or rejection, the notification will be sent to all authors. Fast Paper Publication
ReplyDeleteAs more and more mobile app development is taking place it becomes important for the development of the app to take place with keeping security in mind. This article guides well about the developments in xamarin and allows for the Mobile App Development in Android App Development and iOS App Development
ReplyDeleteSotophone brings on the magic of Symphony Atom II in their web portal. Just go to the website and watch.
ReplyDeleteGet the leading Mobile apps and the integration with blockchain application development IoT App Development and Leading crypto fund management solutions for the businesses across various domains.
ReplyDeleteThank you for your post. This is excellent information. It is amazing and wonderful to visit your site. For more info:- Xamarin App Development
ReplyDeleteI really appreciate your post and it's really excellent. Want to read some more posts from your blog
ReplyDeleteMachine Learning Training in Bangalore
I think this is an informative post and it is very useful and knowledgeable. Hire front end developer suited to your business needs. it adds great value to your business and online presence.
ReplyDeletehire front end developer
A really good post, very thankful and hopeful that you will write many more posts like this one.
ReplyDeletewebsite Re-design in chennai
Best Software company in Chennai
app development in chennai
mobile app development in chennai
I appreciate your website. Its really very help full. Thanks for sharing the great information.
ReplyDeleteWine Glass
Bathroom Mirror
Wall Mirror
Very useful Post. I found so many interesting stuff in your Blog especially its discussion. AT&T Software LLC comes with an incredible team of website and mobile application developers who can customize the perfect solutions to transform your business.
ReplyDeletehire dedicated laravel developer
hire react native developer
Thanks for sharing this wonderful post. I was impressed your post. thanks for sharing.
ReplyDeletebulk sms marketing chennai
bulk sms service chennai
promotional sms chennai
sms marketing chennai
sms service provider in chennai
bulk whatsapp service provider in chennai
bulk sms marketing in chennai
bulk sms price in chennai
bulk sms provider chennai
bulk sms service provider in chennai
chennai bulk sms
best bulk sms service provider in chennai
bulksms in Chennai
bulk sms marketing chennai
Nice Article. Thanks for sharing the valuable information. I hope you will share with us some more updates regarding Xamarin app development and its tricks and tips. Keep Sharing!
ReplyDelete