windows phone out of memory exception - memory-leaks

I am developing windows Phone application. In my application am using Longlistselector and loading long lists with images using MVVM. Also in the details page after lists there are few high res images.
In my application am going from Page 1 to Page 2 and page 2 to page 1 n number of times.
Application is crashing in back navigation giving ArgumentOutOfRangeException and OutOfMemoryException.
I have done the Windows phone application analysis. Its showing GC events are getting called frequently. However it does not show at what point application crashes and how to reduce or how to clean up memory used by application.
If anyone knows about memory cleanup and how to prevent memory leaks please let me know.

The biggest gotchas for memory leaks are event handlers not being released. Whenever you subscribe to an event, you also need to unsubscribe the event when the updates are no longer needed. I'd guess that your page 2 isn't actually going away when you navigate back to page 1.
I believe there are a pair of overloaded methods (OnNavigatingTo and OnNavigatingFrom, I think) that can help you manage this.
Another way is to use a WeakReference and manually pass along any data with an EventAggregator. Probably the easiest one to use is part of the MVVM Light Toolkit (the Messenger). This Weak Reference won't have your event senders hold references to your subscribers.

You also have to remember that windows phone is a new paradigm. You do not navigate from page to page, but rather to a page and back to the previous page. If you are going forward all of the time, you will have new instances of the pages in the navigation stack.

Related

Does Yandex Metrica Slow down the site speed?

I am using Yandex Metrika for my site Thegoldlive.com and facing a Core Web Vitals issue due to it. I believe it's the main reason due to why my site is getting slow. Any way to get rid of it or should I remove this from the site?
When I remove it from the site, the speed of my site gets better. But, I don't want to remove it because it helps me analyze the visitors on site in the best manner. So that's why asking, is there any way to keep both things parallel?
Running your site through PageSpeed Insights it appears your issues are with loading time (TTFB, FCP, and LCP) and shifting content (CLS).
I'm not familiar with Yandex Metrika, but it seems unlikely an analytics solution will slow down these metrics. Mostly they affect responsiveness metrics like FID and INP.
I can't quite see the reason for slow TTFBs (it seems fast to me!), which will directly affect the other loading metrics. You seem to be using a CDN (cloudflare) and the server response time from lab tests seems fast.
It could be you just get a lot of visitors from slow networks/devices? If so one thing that can help here is ensuring sites are eligible for the Back/Forward cache, so at least they get a fast (instant!) load when going back and forwards within the site. Testing your site for this shows your site is using an unload handler, meaning you can't benefit from this performance gain. It looks like you are using Cloudflare's Rocker Loader - ironically something that's supposed to improve performance but that might be holding you back here. I'd turn that off.
For your layout shift issues (CLS), it's must more obvious. You have an advertisement that pops in and out and pushes all the content down. You'd be better to reserve a block of white space for that to slot into, rather than have it dynamically inserted and moving the text around, which is an irritating experience for site visitors.

Trouble-shooting slow-loading documents from DocuSign

a customer representative suggested that I try posting these questions here.
We spent some time monitoring issues with DocuSign loading slowly. While it was now slow every time, when it was slow it seemed to hang up on a particular point in the process.
Below is a screenshot of a trace we ran in the browser and note the element which took 52 seconds to load. When loading was slow, it seemed to hang on this particular element. Could you offer any reasons as to why it could sometimes take 52 seconds or more to load this part?
We also have some other questions:
There seems to be continuous font downloading (2 or 3 meg in size) throughout the process of loading the page. This occurs each time. Why is this and can it be avoided?
Why do we sometimes see Seattle as the connection site when most of the time is Chicago?
We noticed that DocuSign asks for permission to know our location. Does this location factor into where the document is downloaded from? Is the location also used in embedded signing processes?
Thank you for your assistance.
Unfortunately, without a bit more detail I am not entirely sure I can tell you why the page was loading so slow. Is this consistent? If so is it always the same document (perhaps template?) where you see this slowness?
As for your other three questions:
In doing my own test and decryption of the web traffic via fiddler I show the fonts being rendered for each individual tag and not the entire document. This is most likely due to each tag having it's own attributes that can be set (font included).
DocuSign data centers are in Seattle, Chicago and Dallas. All DocuSign traffic can come from any of these three data centers as the system synchronously exists in all three locations. More info can be found here.
DocuSign geo-location is just used to leverage the location capability of HTML5 enabled browsers but the signers IP address is recorded either way. It has no impact on which data center the traffic comes from. It is also included in the embedded signing process. It can be disabled on a per brand basis in the Signing Resource File setting the node DocuSign_DisableLocationAwareness to true.

iPhone app freezes briefly during fetch for content updates. Can this be fixed?

I have an iPhone app that displays blog articles. You can drill into one article and look at it's entire story. At the bottom of the story are comments from other users.
The app fetches latest comments from the server every 15 seconds. If there are more comments returned, the app prepends them to the top of the list. This is all working pretty well.
The problem is that, whenever the app does the fetch (every 15 seconds), the app sort of "freezes" for about 1 second, sometimes 2 seconds. If you are scrolling through the comments, this delay becomes pretty noticeable because the scrolling stops in place while the update processes.
This iPhone app is being developed by a third-party dev team who is remote. I have asked the dev team to stop the "freeze" from happening, but they insist that it's normal functionality when updating a table in the iPhone.
I am not an iPhone developer and have no knowledge or experience of working in that environment, so I am not able to really argue against this. But, I have to imagine that there is some way to do a background fetch and update of the table without causing lag to the user experience.
Does anyone have any thoughts around this? Are there techniques that the devs could be employing to create a smooth experience during the update process?
They are fetching comments in synchronous mode in which UI will hang until it downloads completely. Tell them to download content in asynchronous mode so that it will fetch comments in background and UI scrolling will be smooth then.
Example Codes:
[connection startAsynchronous];
https://gist.github.com/fspeirs/106457
http://allseeing-i.com/ASIHTTPRequest/How-to-use
Let me know if you find any difficulty.

can i turn off fast app resume on back button click

i have a windows 8 phone application, i would like to stop the app from fast resume when the user selects the back button after they have navigated away from the application. the nature of this application is that it should start afresh every time - just like when the user clicks on the applications tile.
i know there is the activationpolicy setting in the application manifest, however this is for the reverse purpose - enabling fast resume like behavior when the user selects the application's tile.
tia
Apps can only choose to participate in Fast Application Switching or Fast Application Resume. Developers can't pick and choose which pieces of behaviours work best for them. So you should choose the scheme that works best for your app using the ActivationPolicy in WmAppManifest.ml.
You could potentially catch the OnBackKeyPress event and invoke Application.Current.Terminate() if the backstack is about to be empty. I'm not sure if this violates any certfication guidelines or not, but Microsoft is very sensitive to back button usage and application lifecycle.
If you’ve seriously thought long and hard about why your app should deviate from the norm and start afresh, then I would just clear the backstack on app resume.
Application_Activated
while (RootFrame.RemoveBackEntry() != null);
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj735579(v=vs.105).aspx#BKMK_Howtoclearthebackstack

Where does the browser fail as a client

Where should the browser be improved upon to help improve application experiences?
For instance some of my main gripes are
A) Different browsers will need different configurations / plugins (I dont want to download different JRE's, RIA platforms such as flash, silverright, gears so forth)
B) I want to always be able to drag data from my desktop to a 'Webapp'. I don't like clicking browse for file and then uploading it. I think this is something that should be easily handled.
Additionally based on the above point - I'd like for it to be very easy to drag information from a web page to my computer to be used in whatever shape form or matter needed. For instance I'd like if I could drag my user ID from stack overflow into my mail / crm client which would take relevant information and maybe even build a picture up of my knowledge.
What else am I missing ?
I see that current problem is ever-growing pile of technologies. Just connect straight to users browser API calls via RPC. RPC is future way to go and it puts end to this tech-piling-up-trend. Currently security is too weak for this kind of technology. Maybe some sort of virtual sandbox would fix that.
See RPyc theory of operation and screencast, it explains the idea pretty well.

Resources