I am at a bit of a loss on what to do at the moment. Here is the story:
After initially passing the ingestion process my ‘Royal Wedding App’ subsequently failed as peak memory exceeded 90MB on a 256MB device. “Fair enough” I thought. I did a little more research, implemented the Memory Counter (from the Channel 9 Coding 4 Fun WP7 toolkit) and sure enough it was exceeding 90MB peak usage (a problem for devices with only 25MB of graphics memory) – see below.
After ‘playing’ with the App for a while you can see here that peak memory has reached 113.21 (NB the hundreds column is truncated).
I decided that rather than reduce functionality on 256MB devices by removing some of the feeds it would be better to simply reduce the number of items shown per feed.
The screenshot below shows my solution for a 256MB device (with 5 items showing per feed). We are now down to peak memory at 76.99MB. Problem solved (or so I thought, read on …)
I resubmitted the App and waited patiently. Several days later I was a little surprised to find that the App failed again on peak memory for 256MB devices! Was I doing something wrong? At this stage I was getting nervous as the Royal Wedding is getting closer and my updated App wasn’t up in the marketplace to compete with Microsoft’s own!
I decided to be ultra cautious and reduce the number of feed items to 4 for the 256MB devices:
This gave me an extra 4MB to play with and I resubmitted the App – only to find that it subsequently failed again with the same error! At this point I was also politely informed that my submissions would be temporarily suspended:
“Considering the issues have been reported to you numerous times in the past and there is no clear evidence of improvement, we are temporarily suspending further certification testing for submissions from your account:”
I opened a ticket at their suggestion, explaining the situation and requesting information on how they go about measuring peak usage so that I could reproduce the issue myself.
I also took a closer look at the memory control and changed some of the parameters (notably the “UpdateInterval” parameter, which I tried at various values down to 500MS refresh with no change in the peak memory counter being apparent).
I am now clutching at straws with this issue. I cannot change the architecture of the Royal Wedding App so close to the event itself and in any event resubmission (and the complications afforded by the suspension) mean that I will struggle to get the updated App into the marketplace before the wedding itself.
The one thing I am now trying (against all the advice I can see on the web) is to issue explicit calls to the garbage collector. This doesn’t appear to change functionality or the peak usage being returned by the Coding4Fun toolkit but maybe it will help me with Microsoft’s’ own methodology for counting peak usage? As I say, clutching at straws …
I am resubmitting the Royal Wedding App with the explicit Garbage Collection calls and also pointing the ingestion team at this post (I will update this post with any progress I am able to make).
If you are reading this and have any ideas that you think might help. Please DM me or post a comment below!
PS Apologies for the examples showing the ‘Nokia Watch’ App – the issue with this App is the same as per the Royal Wedding App being discussed.
The Royal Wedding app failed certification again today with the same memory issue. I have resubmitted with some conditional code that hands over any HTML rendering to the device’s integrated browser (on 256MB machines only). This dramatically reduces peak memory use at the cost of speed (the app is tombstoned while the browser is fired up).
Fingers crossed it will pass before the big event on Friday. If it does I will apply the same fix to the Ad Supported version.
Had an email saying that the app is still failing peak memory.
Here is what it says in the docs:
"The application must not exceed 90 MB of RAM usage. However, on devices that have more than 256 MB of memory, an application can exceed 90 MB of RAM usage."
Now I interpret that as being peak RAM must stay below under 90MB on 256MB devices but its OK to exceed this on 512MB devices. I suspect that for the purposes of marketplace ingestion it is being interpreted as:
"The application must not exceed 90 MB of RAM usage.”
IMO we really need a definitive answer to this from Microsoft. I have wasted a lot of time developing/updating a really nice Royal Wedding app that will now not see the light of day.