16
|
1 |
------------------------------
|
|
2 |
This is the custom memory allocator for use with QtWebkit based killer apps for Symbian/S60.
|
|
3 |
------------------------------
|
|
4 |
|
|
5 |
Major features:
|
|
6 |
- faster than Symbian RHeap. O(1) operations vs. O(n)
|
|
7 |
- more space efficient for smaller allocations (i.e lower system RAM usage)
|
|
8 |
- switches at run-time between 1 of 3 allocation algorithms based on requested alloc size
|
|
9 |
|
|
10 |
* How Symbian OS process startup works:
|
|
11 |
(from http://developer.symbian.org/wiki/index.php/Symbian_OS_Internals/3._Threads,_Processes_and_Libraries )
|
|
12 |
* Process entry point (__E32Startup) -> RunThread() -> UserHeap::SetupThreadHeap().
|
|
13 |
* SetupThreadHeap() is where we initialize our custom (heap) allocator.
|
|
14 |
* If this is first thread in the process, constructors for static data are called, followed by E32Main().
|
|
15 |
* If NOT first thread in process, the thread's entry point is called straight away.
|
|
16 |
* NOTE: UserHeap::SetupThreadHeap() is called BEFORE static data is initialized
|
|
17 |
|
|
18 |
|
|
19 |
Debugging support:
|
|
20 |
|
|
21 |
* To use standard Symbian/S60 memory analysis tools, comment out the call to UserHeap::SetupThreadHeap() and recompile the library.
|
|
22 |
Then relink your application (.exe) with the updated library. This will make RHeap your default allocator once again.
|
|
23 |
|
|
24 |
(from Shane Kearns)
|
|
25 |
* With a 9.4 (5.0) or later RND environment, you can use BTRACE by defining the required BTRACE macros (in the source, commented out).
|
|
26 |
This emits the same BTRACE entries as the default allocator, so you can do memory leak analysis using existing tools based on BTRACE.
|
|
27 |
For example, the promising but cancelled SAW. (which is still available inside nokia).
|
|
28 |
* Memory analysis tools based on dumping the heap to a file and doing post-mortem analysis won't work unless specifically designed for this allocator.
|
|
29 |
|
|
30 |
|
|
31 |
|
|
32 |
|