Understanding memory management

Hi,
I have a couple of questions regarding the memory architecture of BDB JE, just to make sure that I understand it right:
1- BDB cache does not necessarily correspond to physical RAM. An object can be in BDB cache but physically on disk because JVM decided to put its page on disk. True or false?
2- BDB eviction does not necessarily mean that an object will be written to physical disk. It is written to the log write buffer, which is a physical-memory data structure and at some point this data structure will be written physically to the disk log. True or false?
Thanks,
Walaa.

Hi Walaa,
On question 1: The BDB "cache" is just JVM heap. That is, it's just virtual memory and we don't try to control whether it's paged in or out at any given time. So 1 is "true", although I'd hesitate to say that the JVM "decides" about whether or not any given piece of the heap is paged in or out. More typically, the OS decides to page something in or out of VM. In general, you would be wise to size your heap (-Xmx) (and consequently your JE cache size) to fit into physical memory to avoid VM paging as JE will do a better job of following an eviction policy than the OS will.
On question 2: If an object is evicted, that can mean a couple of things, depending on whether the object was dirty or not. If it was not dirty, then JE just destroys any references to that object and lets the GC (eventually) free the space in memory. If the object is dirty, then we "write it to disk", which as you surmise means writing it to the log write buffer which will (eventually) find its way to the operating system file system buffer and eventually to disk. The log write buffer pool is initially sized at 7% of the cache size, and there are initially 3 buffers (unless you set the parameters which change these values). We will flush the log write buffer when it either fills up or needs to be written to disk at transaction commit time. If you have txnWriteNoSync set, then we only force them to the OS's file system buffers at commit time (i.e. we do a write() call). If you have commitSync set then we call fsync() after the write() call. If you have txnWriteNoSync, then we don't do anything at commit time unless the log write buffer is full.
Charles Lamb

Similar Messages

  • Memory management improvements needed?

    i just started understanding memory management and i think mac os x needs improvment?
    My inactive memory is at 2GBs right now with 1GB in wired and 800MB active and about 200Mb free.
    Should mac os x clear the inactive memory first before starting to swap? My swap is at 426Mb right now.

    In the following apple doc,
    Reading system memory usage in Activity Monitor
    Read what it says about "inactive memory".

  • What is difference between 32 bit and 64 bit sql server memory management

    What is difference between 32 bit and 64 bit sql server memory management
    Thanks
    Shashikala

    This is the basic difference...check if helps:
    A 32-bit CPU running 32-bit software (also known as the x86 platform) is so named because it is based on an architecture that can manipulate values that are up to 32 bits in length. This means that a 32-bit memory pointer can store a value between 0 and
    4,294,967,295 to reference a memory address. This equates to a maximum addressable space of 4GB on 32-bit platforms
    On the other hand 64-bit limit of 18,446,744,073,709,551,616, this number is so large that in memory/storage terminology it equates to 16 exabytes. You don’t come across that term very often, so to help understand the scale, here is the value converted to
    more commonly used measurements: 16 exabytes = 16,777,216 petabytes (16 million PB)➤ 17,179,869,184 terabytes (17 billion TB)➤ 17,592,186,044,416 gigabytes (17 trillion GB)➤
    As you can see, it is significantly larger than the 4GB virtual address space usable in 32-bit systems; it’s so large in fact that any hardware capable of using it all is sadly restricted to the realm of science fiction. Because of this, processor manufacturers
    decided to only implement a 44-bit address bus, which provides a virtual address space on 64-bit systems of 16TB. This was regarded as being more than enough address space for the foreseeable future and logically it’s split into an 8TB range for user mode
    and 8TB for kernel mode. Each 64-bit process running on an x64 platform will be able to address up to 8TB of VAS.
    Please click the Mark as answer button and vote as helpful if this reply solves your problem

  • Questions about db_keep_cache_size and Automatic Shared Memory Management

    Hello all,
    I'm coming upon a server that I'm needing to pin a table and some objects in, per the recommendations of an application support call.
    Looking at the database, which is a 5 node RAC cluster (11gr2), I'm looking to see how things are laid out:
    SQL> select name, value, value/1024/1024 value_MB from v$parameter
    2 where name in ('db_cache_size','db_keep_cache_size','db_recycle_cache_size','shared_pool_size','sga_max_size');
    NAME VALUE VALUE_MB
    sga_max_size 1694498816 1616
    shared_pool_size 0 0
    db_cache_size 0 0
    db_keep_cache_size 0 0
    db_recycle_cache_siz 0 0
    e
    Looking at granularity level:
    SQL> select granule_size/value from v$sga_dynamic_components, v$parameter where name = 'db_block_size' and component like 'KEEP%';
    GRANULE_SIZE/VALUE
    2048
    Then....I looked, and I thought this instance was set up with Auto Shared Mem Mgmt....but I see that sga_target size is not set:
    SQL> show parameter sga
    NAME TYPE VALUE
    lock_sga boolean FALSE
    pre_page_sga boolean FALSE
    sga_max_size big integer 1616M
    sga_target big integer 0
    So, I'm wondering first of all...would it be a good idea to switch to Automatic Shared Memory Management? If so, is this as simple as altering system set sga_target =...? Again, this is on a RAC system, is there a different way to do this than on a single instance?
    If that isn't the way to go...let me continue with the table size, etc....
    The table I need to pin is:
    SQL> select sum (blocks) from all_tables where table_name = 'MYTABLE' and owner = 'MYOWNER';
    SUM(BLOCKS)
    4858
    And block size is:
    SQL> show parameter block_size
    NAME TYPE VALUE
    db_block_size integer 8192
    So, the space I'll need in memory for pinning this is:
    4858 * 8192 /1024/1024 = 37.95.......which is well below my granularity mark of 2048
    So, would this be as easy as setting db_keep_cache_size = 2048 with an alter system call? Do I need to set db_cache_size first? What do I set that to?
    Thanks in advance for any suggestions and links to info on this.
    cayenne
    Edited by: cayenne on Mar 27, 2013 10:14 AM
    Edited by: cayenne on Mar 27, 2013 10:15 AM

    JohnWatson wrote:
    This is what you need,alter system set db_keep_cache_size=40M;I do not understand the arithmetic you do here,select granule_size/value from v$sga_dynamic_components, v$parameter where name = 'db_block_size' and component like 'KEEP%';it shows you the number of buffers per granule, which I would not think has any meaning.I'd been looking at some different sites studying this, and what I got from that, was that this granularity gave you the minimum you could set the db_keep_cache_size, that if you tried setting it below this value, it would be bumped up to it, and also, that each bump you gave the keep_cache, would be in increments of the granularity number....?
    Thanks,
    cayenne

  • Oracle 9i Automatic PGA Memory Management

    Hello,
    my team and me, we are facing difficulties to change the size of the PGA used by our server processes for HASH JOIN, SORT... operators,
    here you can see the results of "select * from v$pgastat":
    [pgastat dynamic view results|http://pastebin.com/m210314dc]
    We have been increasing consecutively our pga_aggregate_target parameter from 1.7 Gb initially to 4Gb then at the end 6Gb, the value of "Global memory bound" and " aggregate pga auto target" on the link above are still equal to 0.
    I have been reading threads on the forum and documentation see below, I understand how the global memory manager (CKPT) computest the sql memory target and then the global memory bound, as far as I understand I can only "play" on the pga_aggregate_target value in order to increase the size of our PGAs (I exclude to play with hidden parameters).
    - Joze Senegacnik: Advanced Management of working areas in Oracle 9i/10g : http://tonguc.yilmaz.googlepages.com/JozeSenegacnik-PGAMemoryManagementvO.zip
    - Dageville Benoit and Zait Mohamed: SQL memory management in oracle 9i
    Here different information that could be usefull:
    OS: solaris 10 (db running in a non global zone)
    Arch: 64-bit sparcv9 kernel modules
    Physical memory: 32 Gb (being shared between all non global zones)
    Oracle version: 9.2.0.5 32bits
    Values of init parameters and hidden parameters that could be relevant:
    [init parameters|http://pastebin.com/m40340cf4]
    [hidden parameters|http://pastebin.com/m50d74c53]
    Maybe useful queries:
    over work areas views, I use the following script:
    [wa_analysis.sql|http://pastebin.com/d606ebd9b]
    and the result of it:
    [result of script wa_analysis.sql|http://pastebin.com/m5f49a2e5]

    Joze Senegacnik wrote:
    - either your sessions are using a lot of memory for storing variables like pl/sql arrays which is subtracted from automatic management: PGA_AGGREGATE_TARGET - (aggregated persistent area + a part of the run time area of all server processes)
    - you are hitting a bug
    - or maybe something elseI am really happy you come to this conclusion too, they are the same we made with my team and we have submitting to Oracle support via metalink SR 3-1216060641, we were asking if we hit the following bug (in note 1) or we leak about pl/sql or java... or else indeed,
    note 1: PGA_AGGREGATE_TARGET Assigned Memory Is Left Unconsumed When Set High [ID 844542.1]
    Joze Senegacnik wrote:
    I would like to know:
    1.) what were the values for global memory bound and autotarget immediately (or in short time) after the database restart or when you have increased them Just after the restart of the database and just after the change of P_A_T, we query v$pgastat immediately after and the value of global memory bound and auto target were equal to 0 byte,
    2.) If you are able to change value of PGA_AGGREGATE_TARGET (P_A_T) to 10GB what happens with global memory bound and auto traget. They should be positive at least for a short time. As this is a dynamic parameter you can change it for a short time, run queries and set it back.We plan to do this tonight, we have an "heavy" ITIL change management procedures that allow us to make changes approved by change manager and only during night maintenance window on production system, I come back to you tomorrow. But we have been increasing from 1,7Gb to 4Gb to 6Gb, each time I have been querying v$sgastat in the next 2 mins and global memory bound and auto target were equal to 0 byte.
    3.) Have you checked on the OS level how much memory are using server processes - do these numbers come along with what Oracle says. Not during problematic activities, meaning active work areas performing HASH-JOIN, SORT... operators,
    unfortunately it is a production system, even if he performs poorly, we are not allowed to try or retry the poor queries, but if it comes again I'll do it,
    during low activities, here the results paste with the scripts I used:
    [pga processes info in oracle|http://pastebin.com/f2e540062]
    I spooled the result rows of this previous script in /var/tmp/pga_processes.log then I loop over all processes pid and display pmap output anon info like this:
    h5. cat /var/tmp/pga_processes.log | awk -F' ' '{print $5}' | xargs -n 1 -i pmap -x {}| grep -v 'Addres' |egrep 'Kb' 2>&1 > /var/tmp/pga_processes_os.log
    then I merge line by line the two files with unix paste command, here the results:
    [os and oracle pga informations|http://pastebin.com/f4135c8a6]
    4.) How many server processes are running on you system in average/max and are you using just dedicated processes or also shared?in average 250, we are only using dedicated processes,
    5.) At time of low activity is the global memory bound still 0 or becomes > 0. I have been querying every 15 min during more than 24 hours low activities, it still stay to 0,
    5.) Are you experiencing paging/swapping on OS level?No, here orca figures for details:
    [free memory|http://img509.imageshack.us/img509/5897/ohuron1asd2gauge1024xfr.png]
    swap
    [pagein pageout|http://img121.imageshack.us/img121/6946/ohuron1asd2gaugepginper.png]
    [memory usage|http://img19.imageshack.us/img19/2213/ohuron1asd2gaugeppkerne.png]
    6.) Please post the result of: select * from X$QESMMSGA ;during low activities, [results X$QESMMSGA|http://pastebin.com/f61df7093]
    While you will be answering to my questions I'll try to figure out what we can do to properly diagnose the problem. As you are on 9i it is a little bit harder.I am really kind of your help, as we say in my country, "if you need tow arms one day to carry something, call me."
    --Jeremy Baumont                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Memory Management in LabView / DLL

    Hi all,
    I have a problem concerning the memory management of LabView. If my data is bigger than 1 GB, LabView crashes with an error message "Out of Memory" (As LabView passes Data only by value and not by reference, 1 GB can be easily achieved). My idee is to divide the data structure into smaller structures and stream them from Hard Disk as they are needed. To do so, i have to get access to a DLL which reads this data from disk. As a hard disk is very slow in comparison to RAM, the LabView program gets very slow.
    Another approach was to allocate memory in the DLL and pass the pointer back to LabView...like creating a Ramdisk and reading the data from this disk. But memory is allocated in the context of Labview...so LabView crashes because the memory was corrupted by C++. Allocating memory with LabView-h-Files included doesnt help because memory is still allocated in the LabView context. So does anybody know if it's possible to allocate memory in a C++-DLL outside the LabView context, so that i can read my Data with a DLL by passing the pointer to this DLL by LabView? It should work the following way:
    -Start LabView program--> allocate an amount of memory for the data, get pointer back to labview
    -Work with the program and the data. If some data is needed, a DLL reads from the memory space the pointer is pointing at
    -Stop LabView program-->Memory is freed
    Remember: The data structure should be used like a global variable in a DLL or like a ramdisk!
    Hope you can understand my problem
    Thanks in advance
    Christian
    THINK G!! ;-)
    Using LabView 2010 and 2011 on Mac and Win
    Programming in Microsoft Visual C++ (Win), XCode (Mac)

    If you have multiple subvis grabbing 200MB each you might try using the "Request Deallocation" function so that once a vi is done processing it releases the memory.
    LabVIEW Help: "When a top-level VI calls a subVI, LabVIEW allocates a data space
    of memory in which that subVI runs. When the subVI finishes running, LabVIEW
    usually does not deallocate the data space until the top-level VI finishes
    running or until the entire application stops, which can result in out-of-memory
    conditions and degradation of performance. Use this function to deallocate the
    data space immediately after the VI completes execution."
    Programming >> Application Control >> Memory Control >> Request Deallocation
    I think it first appeared in LabVIEW 7.1.
    Message Edited by Troy K on 07-14-2008 09:36 AM
    Troy
    CLDEach snowflake in an avalanche pleads not guilty. - Stanislaw J. Lec
    I haven't failed, I've found 10,000 ways that don't work - Thomas Edison
    Beware of the man who won't be bothered with details. - William Feather
    The greatest of faults is to be conscious of none. - Thomas Carlyle

  • Memory Management Questions

    Hello All!
    I read the Memory Management Programming Guide for Cocoa - several times. But some things are still not really clear.. I would like and need to have a deeper understanding. So, I hope someone could help me The problem is that I had to get rid of several (..) memory leaks in my app, and now I am a bit confused and unsure about my skills at all..
    1.
    What is the difference between sayHello1,sayHello2,getHello1,getHello2,getHello3 and which one is "better" (and why) - please dont try to interprete the logic/sense of the methods itself
    - (NSString *) sayHello1{
    return [[[NSString alloc] initWithString:@"Hello"] autorelease];
    - (NSString *) sayHello2{
    return [[[NSString alloc] initWithString:@"Hello"] retain];
    - (void) getHello1{
    NSString *hello = [self sayHello1];
    [hello release];
    - (void) getHello2{
    NSString *hello = [self sayHello2];
    [hello release];
    - (void) getHello3:(NSString *)hello{
    [hello retain];
    NSLog(@"%@", hello);
    [hello release];
    Concerning this, there are several questions:
    2.
    If I have to release everything I retain/alloc, why then do I have a memory leak, if am returning an object (which was allocated with alloc and init) from a method without autorelease. The object is still in memory. But the following method wont work. What I accept. But the object is, if returned, not reachable, but also not released. Why then is it not automatically released? (i dont mean autorelease)
    - (NSString *) sayHello1{
    return [[NSString alloc] initWithString:@"Hello"]];
    - (void) getHello{
    NSString *hello = [self sayHello1]; //wont work. the object is not there, but also not released. WHERE is it?
    [hello release];
    3.
    When is a delegate method released, if I have no variable I can use to "release"? So, if I have nothing to access the delegate like a NSURLConnection delegate?
    should I, for example, call a [self release]?
    - (void)startParser{
    Parser *parser = [[Parser alloc] init];
    [parser start];
    //should I use a [parser autorelease or retain] here?
    - (void)parserDidEndDocument:(NSXMLParser *)parser{
    //do somethings with the parserstuff
    [self release];
    4.
    *And the last question:*
    Where can I see in instruments, which elements have retain counts > 1 and potential leaks? I was reading the instruments guide but there is only theoretical stuff. No practical guides like: your app should not have/use more than x megabyte ram.. for example: my app gets slower and slower the longer a i use it. -> this indicates memory leaks..

    A Leak is only a leak if the reference to the object is lost.
    https://devforums.apple.com/message/189661#189661

  • Memory management problem

    hi everyone.
    I m trying to use OpenCV in After Effects. The problem is that OpenCV has its own management of memory.
    The AE memory management is kind of bound to the lock/unlock system for multi thread processing and is kind of difficult to use from openCV...
    So, as long as you dont use multi processing, I thought that using openCV would not be a problem.
    But I was wrong. I got a random error:
    After Effects error: Effects modules should only dispose worlds they have allocated.
    My effect is allocating a lot of opencv layers, and one temporary AE layer. When I dispose the AE temporary layer, I have some errors when the rendering get slow and the user tries to interrupt it. the  "After Effects error: Effects modules should only dispose worlds they have allocated."
    When looking at the layer before disposing it, It s totally corrupted with random values for all the field, but data field is not NULL.
    I did not get any error during the memory allocation of the layer though. Still it gets corrupted at some point.
    I m wondering if it is openCV memory and AE memory that get into conflict or if it s my way of checking if layer has not been correctly allocated that is wrong.
    I dont understand also why it would conflict, since system will allocate the memory on demand, and there is no reason the system would give conflicting memory regions....
    I solved my problem by stopping using the AE temporary layer.
    If anyone experienced and solved this kind of problem, please, let me know.
    Regards

    hey marc,
    I think you are overcomplicating things a little,
    1) add a local variable of type PF_LayerDef (or allocate on heap); no
    need to initialise anything
    2) WorldSuite1()->new_world()
    3) use the layer. use PF_GET_PIXEL_DATA8() to get pixels
    4) WorldSuite1()->dispose_world() (optionally free a heap variable)
    Am 28.07.2011 05:06, schrieb salvati marc:
    I m back to this problem...
    As always, Shachar, it seems you are right. I deactivated OpenCV code, and... still crashing.
    I investigate the problem more in depth and found my mistakes...
    What I was doing was:
    1) allocating my tmp layer
    2) copying source to tmp
    3) processing with opencv
    4) copying back to output
    5) cleaning tmp layer
    I did few mistakes:
    1) I was checking tmpLayer->data == NULL to see if the tmp layer was right or not (in step 5). BUT, I copyed my source to tmp (step 2) even if it was not correctly allocated... I guess that s why when I check NULL before dispose it was not consistent
    2) I did not always set the  tmpLayer->data to NULL before allocation! default value is not NULL. So my check after allocation was not consistent in some case
    So multiple reason of not getting a NULL data although the data where not allocated...
    Like you said,  ill supervised creating/disposing of worlds...
    Anyways, I realized in my algorithm that i did not nid the tmp layer, and I could just use the output layer for that purpose... But i m sure i ll get this problem again in the near future, so I had to investigate that.
    Thanks again for your precious help.
    Regards.
    >

  • Memory Management release or autorelease?

    Hi!
    Im am finishing my app and starting to optimize and analyze my code with instruments..
    There are still some things concerning memory management I dont understand..
    1. I'm starting a urlConnection. My class implements the connection delegate, so, it is "waiting" for the response data in a background thread. If I am clicking "build & analyze", XCode complains about a potential memory leak for the getMessageHeaderConnection variable if I am not releasing it. Should I release it (variant 1), or should I autorelease it (variant 2)? Releasing means, that the object is destroyed, right? But: If am releasing it (variant 1) my getGroupMsgHeaders:groupId method doesn't stop immediately, it is still alive, but it should be dead, right?
    - (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    GetMessageHeaderConnection *getMessageHeaderConnection = [[GetMessageHeaderConnection alloc] initWithDelegate:self];
    getMessageHeaderConnection.currentUserLocation = currentUserLocation;
    [getMessageHeaderConnection getGroupMsgHeaders:groupId];
    [getMessageHeaderConnection autorelease]; //variant 2
    [getMessageHeaderConnection release];//variant 1

    sommeralex wrote:
    1. I'm starting a urlConnection. My class implements the connection delegate, so, it is "waiting" for the response data in a background thread.
    Are you sure that is the best strategy? Threading can make things painfully difficult and complicate your life, including where autorelease is concerned. You should be able to do this on the main thread.
    If I am clicking "build & analyze", XCode complains about a potential memory leak for the getMessageHeaderConnection variable if I am not releasing it. Should I release it (variant 1), or should I autorelease it (variant 2)?
    Neither, apparently.
    Releasing means, that the object is destroyed, right?
    Yes.
    But: If am releasing it (variant 1) my getGroupMsgHeaders:groupId method doesn't stop immediately, it is still alive, but it should be dead, right?
    If that is running in another thread, then it will continue running, but "self" will be invalid and will crash when you access it. Don't bother testing it, because it could work just fine in debug mode. It will still crash when someone else tries it.
    Standard procedure in this case is to make sure that the method running in the background thread retains itself until the method is done. Many of the built-in threading methods or other asynchronous methods (such as NSInvocation) will do that automatically. You can study the documentation to find out where that happens.

  • Memory management count

    Hello all,
    I have a general inquiry on keeping the memory count in regards to memory management. Suppose my set routine is this (which I believe is the general set routine, save for checking that the new input does not equal the current value):
    -(void)setVariable:(id)newValue{
    [[variable release]];
    [[newValue retain]];
    Variable = newValue;
    1. Assuming 'newValue' has not been retained or allocated elsewhere, it's count here is 1. Is that right?
    2. Is the count of 'variable' also 1? We didn't actually retain 'variable'. But what it's pointing to is retained. I am unsure how the count is kept. Who get's the extra 1? 'variable' or 'newValue'?
    Message was edited by: rpstro02
    Message was edited by: rpstro02

    Keep in mind that the variables you're dealing with here are pointers to objects. And that it's the actual objects that have a retainCount, not the pointers.
    So when you do:
    [newValue retain];
    ... it's whatever object newValue is pointing to that gets an incremented retainCount... not the newValue pointer itself.
    Then when you do:
    variable = newValue;
    ... now you've just made your "variable" pointer point to the _same object_ that newValue is pointing to. There's only one retainCount involved. So there is not an "extra 1" if I'm understanding that part of your question correctly.
    Steve

  • Memory Management of SAP HANA

    Hi All,
    I went through one of the documentation in SAP HANA Memory management .
    http://www.saphana.com/servlet/JiveServlet/download/2299-2-12806/HANA_Memory_Usage_v2.pdf
    This gave me a really good understanding about the Memory management of HANA . Queries for Used and Resident memory and comparison with Overview tab numbers
    I had few questions , Which was almost answered in other discussed in one :
    But i still have few questions about  Resident and  used memory
    Used Memory : Code + Tables + DB Managment
    Resident :  what is the formula or content ?
    What does this picture refers to ?
    Infact the below statements are bit confusing
    When memory is required for table growth or for temporary computations, the SAP HANA code obtains it from the existing memory pool. When the pool cannot satisfy the request, the HANA memory manager will request and reserve more memory from the operating system. At this point, the virtual memory size of the HANA processes grows.
    Once a temporary computation completes or a table is dropped, the freed memory is returned to the memory manager, who recycles it to its pool, usually without informing Linux6. Thus, from SAP HANA’s perspective, the amount of Used Memory shrinks, but the process’ virtual and resident sizes are not affected. This creates a situation where the Used Memory may even shrink to below the size of SAP HANA’s resident memory, which is perfectly normal.
    My doubt here is how  in any given point of time used memory can go below the used memory , because resident memory is always loaded with what is there in used memory , When used memory itslef is less , what does resident contains extra .
    Also how to make a relation with HANA used memory , Database Resident memory , Virtual memory .
    In case of  a memory issue , what should we check , Used memory of HANA   OR resident memory of HANA  ?
    Thanks,
    Razal

    Hi  all,
    I am trying understand memory part bit in details ,  as i am building a complete monitoring infrastructure for HANA , and memory is core of HANA  all part of HANA
    Can you also help me to understand how to make some difference  for used memory in HANA and Resident memory
    When we say that the Resident memory is something from OS point of view  , this is the memory of the OS which is really being used .
    So if the  used memory from HANA Perspective is full , OS still have some free memory  which can be used , How that part is managed .
    When i say we are out of memory ,  Both used memory from HANA
    Resident memory from OS is full ?
    OR does the used memory is simply a calculation of Code + table + etc from HANA point of view .
    When execute query :
    SELECT SERVICE_NAME,ROUND(SUM(TOTAL_MEMORY_USED_SIZE/1024/1024/1024), 2) AS
    "Used Memory GB", ROUND(SUM(PHYSICAL_MEMORY_SIZE/1024/1024/1024), 2) AS
    "DB RESIDENT Memory GB" FROM SYS.M_SERVICE_MEMORY GROUP BY SERVICE_NAME
      SERVICE_NAME     Used Memory GB DB RESIDENT Memory GB
    1 nameserver         6.73           1.7                 
    2 preprocessor       5.38           0.24                
    3 indexserver        9.19           4.35                
    4 scriptserver       7.52           1.83                
    5 statisticsserver  8.52           3.87                
    6 xsengine          7.92           1.82                
    7 compileserver    5.31           0.23                
    On top of all this , In admin view  i get used memory as 17.87 as used memory and 18.89 as peak  .
    How this used memory is summed up in admin view .
    I am using version 70 .
    Thanks,
    Razal

  • Memory Management comparison between Database 9208 and 11gR2 on Sun Solaris

    Hi All,
    Need some case studies which would help understand how Memory management is done in 9208 and 11gR2 on Sun Solaris SPARC
    Also wanted some real time data which says 11gR2 manages Memory and CPU better than 9208. Some comparison Graph between 9i and 11gR2.
    Any information will be of great help.
    Thanks everyone for your support.
    Thanks
    Abdul

    please see if below helps :
    http://www.oracle.com/global/de/upgradecommunity/artikel/upgrade11gr1_workshop2.pdf
    http://www.dba-oracle.com/oracle11g/oracle_11g_memory_target_parameter.htm
    Regards
    Rajesh

  • Aren't Cocoa Memory Management Rules flawed?

    I understand the details of Cocoa memory management but I'm wondering what's the rationale behind the usage of autorelease with convenience constructors.
    The golden Cocoa rule is that factory methods send an autorelease message to objects prior to returning. But why is that? Why don't consider convenience constructors the same as alloc, newObject and the like?

    Well, that's even worse: if you create several throwaways with autorelease, you're essentially delaying their releasing to the release of the autorelease pool, i.e., by default, when the application quits, unless you provide your own autorelease pool. It sill doesn't make any sense to me.
    Stack based objects would have probably complicated the syntax of the language.

  • ADO Memory Manager

    I have an application that uses large ADO datasets, along with GetRows() in order to speed up the process, which are properly released after termination. Running on the main thread, it runs for days without any problem, but if I run it in threads, it shows
    a memory leak, suggesting that ADO memory manager may be holding memory blocks for later reuse.
    Some years ago I found a registry setup which helped to fine tune this ADO memory reuse, but I cannot find this information anymore. Does anybody have a hint about what can I do about it?

    Hello Mário,
    The current forum is used for Data platform development using ADO.NET managed providers, especially System.Data.SqlClient, System.Data.Odbc and System.Data.Oledb. Since you are using ADO api, I move it to the where is forum for, there are forum experts help
    redirect it to a more proper one.
    Regards.
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Memory manager - Profiler

    I will have several questions about memory management,
    garbage collection by Flash.
    First of all can anyone explain what is the link between the
    memory usage of the profiler and the System.totalMemory value.
    I use a module to display the totalMemory value evolution
    with a timeline chart (get the totalMemory value every 0.5 second
    and keeping only last 300 values).
    Here what I get : after about 4 hours of time running, the
    memory usage peak is about 24 Mbytes, BUT the System.totalMemory is
    about 600 Mbytes !!
    Before trying to understand why I have this memory
    consumption, I would like to understand the difference between what
    the profiler is measuring (24 Mbytes) and the memory used by the
    Flash Player (600 Mbytes).
    Thanks

    This is a loaded question but let me try to take a stab at it:
    First, let's right away eliminate the 'Minimize Application' issue; the memory that goes way down to 1 meg is the actual Real Memory being used by the Application, by minimizing it, you are putting all the application memory space into the Windows swap file. When you restore the application, then you will see the value grow again back to where it was by taking the swapped out pages back into real memory.
    The difference between the memory profiler and the task manager could be drastic in terms of consumption, the memory profiler is tracking only the java objects allocated and freed by your application, the task manager is look at the Windows Process as a whole, which contains a Virtual Machine that needs memory to store loaded classes, internal data and application heap (which are the actual java objects). The application heap will be usually far bigger than the cumulative total number of objects in your application.
    A usual way to use the memory profiler is to, by running it on your application, take a snapshot of the memory before an expensive operation, perform the operation, then take a snapshot again and see what is left to make sure no leaks are being created.
    In order to find out why your expensive operation is so... expensive, is to increase the granularity of the operation up to a point where you will get to the few sections of code that allocate all that memory.
    Hope that helps,
    Michel

Maybe you are looking for

  • Batch Process for "Enable for commenting in Acrobat 9 pro/Acrobat 8.0 Professional

    We had set up a process that every generated PDF through distiller should have "comments enabled" PDF. We have many PDF like this. Now I'm doing one by one. We just wanted the same to be in Batch Mode. I just wanted to know that how to do by using "B

  • Sent iCloud email missing!

    Help! I have sent an email, and recepient confirmed that he got it, but it is not in my Sent items. Email vanished from Mail.app! I did not delete it, I did nothing to it, it just never laned in my Sent items! Why is this happening? Can this be preve

  • Specification creation in specification workbench

    Hi EHS guru, When I am on the Specification creation screen using the specification workbench transaction, there are the following tab appears:      Specification Header tab      Restriction tab      Identifiers tab      References tab      Mate

  • Super 10.50 - a J2EE toolkit supporting Weblogic 10

    Acelet has released Super 10.50, supporting Weblogic 10, with Easy EJB, Easy JMS, Easy JMX, Easy Webservice and more: at http://www.acelet.com Thanks.

  • JSON arrays vs. properties

    I'm finding that a JSON response from Raylight may or may not be an array depending on whether there are multiple items.  For example, a WebI doc with multiple reports will produce this:   "reports": {     "report": [         "id": 2,         "name":