none
When we run the application on handheld device, the Program Memory allotted to the application (32MB) getting filled and Handheld got rebooted. There is no provision to increase the Program memory (Virtual memory) for this model device. RRS feed

  • Question

  • Mobile Worker module Insights

     

    Technology Stack:

    Software:Visual Studio 2008, .NET Framework 3.5, Windows Mobile 6.5.3, SQLite Database, RESCO UI controls

    Hardware:Honeywell Dolphin 99EX device

    Processor: Texas Instruments® OMAP3715 1.0GHz processor

    Operating System: Microsoft® Windows Embedded Handheld 6.5 Professional and Classic

    Memory: 512 MB RAM x 1 GB Flash

     

     

    Problem domain:  When we run the application on handheld device, the Program Memory allotted to the application (32MB) getting filled and Handheld got rebooted.  There is no provision to increase the Program memory (Virtual memory) for this model device.

     

    -          Mobile worker application start working with approximately 12-14 MB virtually memory remaining on the device.

     

    -          Rest is utilized in Application launch and other startup processes.

     

    -          As users proceed with their task (opening forms), virtually memory starts decreasing gradually at each task by avg of .20 MB. We are closing the forms when the task is completed on that page.However, between there are few process that consumes 1 MB memory during data collation binding or during select process from SQL lite.

     

    -          Virtual memory remain at 5MB if users stay on the same flow or working on the same forms. However, it start decreasing beyond 5MB if users leave the current flow and enter in the new flow that required new forms to open.

     

    -          From here onwards as worker opens a new process memory decreases and come down to zero. This causes the application to crash and reboot.

     

     

    Below is the memory logs when we start the device. 300 remaining out of 400 physical memory and 24 MB remaining out of 32 MB of virtual memory

     

    - Memory status at the successful launch of the Application:-

    300.79/420.94 (MB)Phys, 24.44 /32.00 (MB)Virtual

     

    - Memory status after SQL lite table creation that triggers automatically after successful ECD application launch

    290.45/420.94 (MB)Phys, 16.25 /32.00 (MB)Virtual

     

    - Memory status after New HH register process, As the device was, register device process ran and consumed approximately 2 MB:-

    288.60/420.94 (MB)Phys, 14.50 /32.00 (MB)Virtual

     

    - Memory status after supervisor login:-

    281.88/420.94 (MB)Phys, 12.06 /32.00 (MB)Virtual

     

    - Supervisor started performing different action and memory utilization gradually started going up and gradually came down to zero:-

    Memory status after Dock view collection bind. 

    Saturday, August 5, 2017 1:18 AM

All replies

  • Sounds like you have some memory leaks to deal with first. Please see my answer in this thread for some tools you can use to detect and find these memory leaks.

    The way to increase more free VM space for your application is to move parts of your application into DLLs. Each process (or DLL) gets 32 MB VM space, so the more you can move into other memory slots, the better. Try to fill the DLL memory slots to the max 32 MB (in other words; don't waste VM space by creating DLLs that are only using 4 KB; you'll waste 28 KB of VM space in that slot!).

    For a better understanding of VM usage and allocation in CE 6.0, read this article.


    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    Wednesday, August 9, 2017 7:00 AM
    Moderator