Are there some APIs or some way to find list of running processes, their memory usage and CPU consumption. I basically need a tool similar to "TOP" in Linux for WP7.
No. There was a Task Manager in a pre-release version of the WP7 emulator, but that was removed early on.
Related
I am wondering if there is a way for a Universal Windows Phone app (Windows Phone 8.1 or 10) to detect if the app is using much memory and is approaching the memory limit that apps have on a Windows Phone (before it gets killed by the OS)?
Ideally the OS/platform would provide API/services for an app to register and listen to an event that is raised, telling the app that it has consumed almost all of the memory that it is allowed to have so that the app can take appropriate actions (force release some cached data) to clear up some memory and avoid being killed by the OS. But I'm not sure if such API exists on Windows Phone 8.1 or 10 for a Universal Windows App!?
The Windows.System.MemoryManager methods report on the app's memory usage and memory limit and raises events as the limit changes and as usage increases and decreases between low, medium, and high levels.
I'm developing a WinCE 5.0 application that uses two commercial libraries. When the application starts calling the second library it gets slowlier and then after some use, it hangs and the whole OS freezes. It has to be rebooted to work again. The thing is that I'm developing this without a physical device (a testing person installs each release and runs the tests) and without an emulator (the device provider is not facilitating an OS image).
My intuition tells me that the second library is using all the available resources (basically, handles and memory) for a WinCE 5.0 process. I have to prove this to the library vendor. So I wish to add to my logs some general process and system information. Could you recommend me which APIs to call to get this information in CE?
I would really appreciate any hint
Thanks in advance!
Windows CE provides a very robust set of APIs for a subsystem called CeLog. CeLog is what Kernel Tracker uses to collect and display it's information. You can get all the way down to scheduler calls and thread migrations if you want. The real danger with using CeLog is in collecting too much data so that making sense of it is difficult, but if you filter the collections to just your process, that should help. You could collect the data to a log file, then use Kernel Tracker to open and view that data.
Here are some good starting points for info:
Introduction to Remote Kernel Tracker
More on Remote Kernel Tracker
CeLogFlush.exe (particularly the section 'Collecting Data on a Standalone Device with CeLogFlush')
Implementing a Custom Event Tracking Library
Embedded Visual C++ 4 contained "Remote Performance Monitor" that could do just that. Microsoft retracted EVC4 as free download some time ago, but it can still be downloaded from MSDN or found on the internet.
With service pack 4 it should work for WinCE 5.0. It does not appear to work with Windows Embedded 6.0 and newer though.
Windows Phone 7 gives you 6 MB of memory for a background application. How can I increase this limit?
I'm using WP 7.1.1 with the latest updates.
Windows Phone has very strict rules about background agents. So, going past this limitation is not possible, unless you modify the registry after an interop-unlock.
I try to find out why a web page causes a memory leak on Motorola MC3190.
Barcode scanners are new with Windows 6.0 CE. There are no programs installed only default. We use it only IE.
When we used it for two weeks on, scanner memory ran out and it crashed. After the full restart, it works normally, restarting only Internet Explorer doesn't help.
Only Internet Explorer is being used.
I try to find some program like task manager to find out if IE has a memory leak.
I ask because Windows CE 6.0 doesn't have a task manager.
Any ideas on how to check the memory usage?
I question whether you did much investigation on your own. A simple search engine query for me turned up a lot of promising results like these:
Task Manager on CodeProject
iTaskManager
Remote Task Monitor
Windows CE Task Manager
In addition, if all you want to do is monitor a process' memory usage, rolling your own monitoring app using the toolhelp APIs would be pretty straightforward.
I tried the remote task monitor for wince. It does the job well. https://www.osletek.com/pg/2186/Remote_Task_Monitor_for_Embedded_Devices
How i can implement memory clean up in WP7? Does GC.Collect() do the trick? or need clean up manually?
You don't need to manually clean up memory on Windows Phone. You shouldn't call GC.Collect() unless it's absolutely necessary.
I would recommend you read this article: Windows Phone 7 App Development: When does the GC run
As Claus mentioned, the GC handles memory cleanup for you. If you are asking because you are running into memory usage issues, you can use the profile your memory usage using the Windows Phone Profiler (as long as you are targetting 7.1).