Measure thread's memory consumption

Hello.
Nice to see you here.
Please tell me is there any possibility to measure thread's memory consumption?
I'm trying to tune application server.
Totally physical server with Power AIX 5.3 on board has 8GB of memory.
For example I allocate 1408m for Application Server Java heap (-Xms1408m -Xmx1408m).
Then I tune Application server thread pools (web-threads, EJB-threads, EJB alarm threads, etc...).
As I understood Java treads live in native memory, not in Java heap.
I would like to know how to measure size of thread in native memory.
After that I can set size of thread pools (to avoid OutOfMemory native or heap).

holod wrote:
As I understood Java treads live in native memory, not in Java heap.The data the JVM uses to manage threads may live in the JVM's own memory outside of the Java heap. However, that data will be a very tiny fraction of what the JVM is consuming (unless you have huge number of threads, which are all using very, very little memory).
I would like to know how to measure size of thread in native memory. It will almost certainly be so small as to not matter.
After that I can set size of thread pools (to avoid OutOfMemory native or heap).No, that will almost certain not help at all.

Similar Messages

  • Measuring Swing GUI memory consumption

    Hi community,
    First , I beg you for excuse for posting this here and not in the Swing forum. I think the question is not clear GUI question, but a more generic one.
    I have a GUI that seems to consume a lot of memory(i.e. opening several screens causes OutOfMemoryError and data received on network measures to a very small amount (<5%) compared to the total memory shown by Task Manager).
    I would like to take these screens apart to discover which of their parts are heavy so that I can concentrate my efforts on optimizing them. I cannot use ObjectOutputStream serialization since it seems there are lots of classes that do not implement Serializable, so I need some other way of determining component memory sizes. I believe that XMLEncoder serialzation will leed to nowhere because it contains a lot of text describibg properties that cannot be accurately measured.
    What can I use to measure the memory consumption for a given component tree?
    Thank you for your time
    Mike

    Swing related questions should be...
    Umm have you considered the use of a Profiler? I kind of doubt it is the GUI per se but a model or something that is leaking memory. I mean there are lot's of fairly complex GUI's out there that don't have these issues so I suspect there is a very deep or complex structure somewhere that is eating all of the memory.
    But in short I think running in some sort of profiler would be good becuase I also suspect that this may be one of this issues where looking at each component may not help because it's as the whole thing is used at runtime where some complexity comes into play and it dies.
    Try http://www.manageability.org/blog/stuff/open-source-profilers-for-java for a start.

  • How to measure memory consumption during unit tests?

    Hello,
    I'm looking for simple tools to automate measurement of overall memory consumption during some memory-sensitive unit tests.
    I would like to apply this when running a batch of some test suite targetting tests that exercise memory-sensitive operations.
    The intent is, to verify that a modification of code in this area does not introduce regression (raise) of memory consumption.
    I would include it in the nightly build, and monitor evolution of summary figure (a-ah, the "userAccount" test suite consumed 615Mb last night, compared to 500Mb the night before... What did we check-in yesterday?)
    Running on Win32, the system-level info of memory consumed is known not to be accurate.
    Using perfmon is more accurate but it seems an overkill - plus it's difficult to automate, you have to attach it to an existing process...
    I've looked in the hprof included in Sun's JDK, but it seems to be targetted at investigating problems rather than discovering them. In particular there isn't a "summary line" of the total memory consumed...
    What tools do you use/suggest?

    However this requires manual code in my unit test
    classes themselves, e.g. in my setUp/tearDown
    methods.
    I was expecting something more orthogonal to the
    tests, that I could activate or not depending on the
    purpose of the test.Some IDEs display mmeory usage and execution time for each test/group of tests.
    If I don't have another option, OK I'll wire my own
    pre/post memory counting, maybe using AOP, and will
    activate memory measurement only when needed.If you need to check the memory used, I would do this.
    You can do the same thing with AOP. Unless you are using an AOP library, I doubt it is worth additional effort.
    Have you actually used your suggestion to automate
    memory consumption measurement as part of daily builds?Yes, but I have less than a dozen tests which fail if the memory consumption is significantly different.
    I have more test which fail if the execution time is siginificantly different.
    Rather than use the setUp()/tearDown() approach, I use the testMethod() as a wrapper for the real test and add the check inside it. This is useful as different test will use different amounts of memory.
    Plus, I did not understand your suggestion, can you elaborate?
    - I first assumed you meant freeMemory(), which, as
    you suggest, is not accurate, since it returns "an
    approximation of [available memory]"freeMemory gives the free memory from the total. The total can change so you need to take the total - free as the memory used.
    - I re-read it and now assume you do mean
    totalMemory(), which unfortunately will grow only
    when more memory than the initial heap setting is
    needed.more memory is needed when more memory is used. Unless your test uses a significant amount of memory there is no way to measure it reliably. i.e. if a GC is perform during a test, you can have the test appear to use less memory than it consumes.
    - Eventually, I may need to inlcude calls to
    System.gc() but I seem to remember it is best-effort
    only (endless discussion) and may not help accuracy.if you do a System.gc(); followed by a Thread.yield() at the start it can improve things marginally.

  • Memory consumption of queries in workbooks

    We have an issue with the exceution of a Workbook which contains several queries. The queries require very much memory which finally leads to a shortdump (TSV_TNEW_PAGE_ALLOC_FAILED). We found that during execution of the workbook the memory is not released after a query has been executed and therfore at some point of time the dump occurs. However, if the queries are refreshed manually one after the other in the workbook the memory is relaesed and finally the workbook can be executed by this workaround.
    My question is, if anyone has an idea, if it is possible to apply a setting somewhere that the queries relaese the memory after execution when they are all refreshed together in the workbook?
    Thanks a lot in advance for any hint & Kind regards,
    Hans-Jörg

    Hi,
    Try this,
    You may be able to workaround the problem by increasing free memory avaiable, parameter em/initial_size_MB (contact your Basis team or refer note 835474).
    Also concenrate on parameter ztta/roll_extension (Refer note 146289)
    Try increasing the parameter, abap/heap_area_dia from tcode RZ11.
    Also check the following notes in detail as well,
    649327     Analysis of memory consumption
    425207     SAP memory management, current parameter ranges
    369726     TSV_TNEW_PAGE_ALLOC_FAILED
    185185     Application: Analysis of memory bottlenecks
    If the issue persist, please review SAP Note 779123 and query design.
    check this,
    http://scn.sap.com/thread/288222
    http://www.sapfans.com/forums/viewtopic.php?f=3&t=109557
    regards,
    anand.

  • Idle server 1 meg/second memory consumption

    WL 6.1 sp2
    Solaris 2.8
    JDK 1.3.1_02 -server, 1 gig heap
    I noticed lately through the console that an idle WL server, with our
    application deployed but no client/sockets connecting to it other than the
    web console, is consuming memory at about 1 meg/second. Is this the norm?
    Seems a bit voracious to me....
    Gene

    Damn it, I added one too many zeros! I'm looking at the performance graph
    in /console and thought I was seeing 300 megs, instead of 30 megs! So in
    actuality my idle server is consuming .1 meg/sec, which seems a bit more
    like it... Can I make a feature request, have the console show
    comma-separators for those big numbers? :-)
    Actually this is a lead-in to my real question: on production we have a
    couple of servers that are true memory hogs; they go through 1 gig GC's in
    20 seconds! This is causing a lot of issues, obviously: GC occurs every 20
    seconds, with 3-5 second GC time. Hence we have an inordinate amount of
    "downtime", even if we cluster 2-3 servers, each experiencing this kind of
    memory consumption. Here's what I want:
    1) I like to capture a daily and weekly graph of GC frequency and duration.
    The java applet console does not record such history, so I'm wondering if
    there is an MBean I can use, or has someone written one that does this?
    2) How can I profile my 50 SLSB ejbs to find which one(s) are the memory
    hogs? They aren't leaking, because GC always bring them back down to
    baseline; they just suck up a lot of memory! I've tried using -Xrunhprof
    and JProbe, but both slow the server down to a point where its unbearable to
    run (on dev, I don't do this on production :-)). You guys have other tricks
    to find memory consumers?
    Thanks,
    Gene
    "Rob Woollen" <[email protected]> wrote in message
    news:[email protected]..
    1 MB/s does seem like a lot for an idle server. You might try taking
    some thread dumps when it's supposedly idle and see what it's up to.
    -- Rob
    Gene Chuang wrote:
    WL 6.1 sp2
    Solaris 2.8
    JDK 1.3.1_02 -server, 1 gig heap
    I noticed lately through the console that an idle WL server, with our
    application deployed but no client/sockets connecting to it other than
    the
    web console, is consuming memory at about 1 meg/second. Is this thenorm?
    Seems a bit voracious to me....
    Gene

  • Huge Memory Consumption for Transparent Stage

    When executing the test below the memory consumption in the Task Manager grows up to 2GB within seconds on my test system - the issue does not occur when the stage style is changed from TRANSPARENT to UNDECORATED. Tested on Win7, 8GB with FX8b116.
    public class TransparentStageMemoryIssueTest extends Application
      public static void main(String[] args)
        Application.launch(args);
      @Override
      public void start(Stage stage)
        System.err.println(System.getProperty("javafx.runtime.version"));
        //stage.initStyle(StageStyle.UNDECORATED);
        stage.initStyle(StageStyle.TRANSPARENT);
        final BorderPane root = new BorderPane();
        root.setStyle("-fx-background-color:#808080;-fx-background-radius:30;-fx-border-radius:30;-fx-border-width:14;-fx-border-color:blue;");
        Scene scene = new Scene(root, 800, 600);
        stage.setScene(scene);
        stage.setX(10);
        stage.setY(10);
        stage.show();
        new Thread()
          public void run()
            for (int i = 0; i < 1000; i++)
              Platform.runLater(new Runnable()
                @Override
                public void run()
                  int minSize = 500;
                  int maxSize = 1000;
                  int w = minSize + new Random().nextInt(maxSize - minSize);
                  int h = minSize + new Random().nextInt(maxSize - minSize);
                  Window win = root.getScene().getWindow();
                  win.setWidth(w);
                  win.setHeight(h);
              try
                sleep(50);
              catch (InterruptedException e)
                e.printStackTrace();
        }.start();

    Could you post this issue to the JavaFX Jira as well as an email to openjfx-dev?
    Thanks,
    -- Jonathan

  • J2EE Engine memory consumption (Usage)

    Dear experts,
    We have J2EE Engine (a Jawa stack).  When I run routine monitoring via the browser and read the memory consumption I am meet with a chart that show a sawtooth like graph. Every hour from 19:00 to 02:00 the memory consumption will rise with approx. 200 MB after 7 hours all of a sudden the memory consumption drops down to normal idel levvel and start over again. I can inform that at the time there are no user on the system.
    My question is what are the J2EE doing? since there is no user activity.Are the J2EE engine running some system applications? is it filling up the log files and then empty(storing) them.
    I hope some of the experts can answer.
    I just want to undertand what's going on, on the system. If there is some documentation/white paper on how to interpret/read the J2EE monitor I will great full if you drop the information or link here.
    Mike

    Hi Mike
    To understand what exactly is being executed in Java engine, I'd suggest you perform Thread dump analysis as per:
    http://help.sap.com/saphelp_smehp1/helpdata/en/10/3ca29d9ace4b68ac324d217ba7833f/frameset.htm
    Generally 4-5 thread dumps are triggered at the interval of 20-25 seconds for better analysis.
    Here's some useful SAP notes related to thread dump analysis:
    710154 - How to create a thread dump for the J2EE Engine 6.40/7.0
    1020246 - Thread Dump Viewer for SAP Java Engine
    742395 - Analyzing High CPU usage by the J2EE Engine
    Kind regards,
    Ved

  • ITS 620 Template Cache - unlimited memory consumption

    Hi,
       We have patched standalone ITS 620 to 23 to resolve some issues we have with
    the display of ITS screens via the Mozilla browser. However, we are now encountering memory issues where the Agate process is consuming much more than is allocated via the threads and sessions values.
       With patch 23 we can now see the template cache value and it consumes all the free physical memory on the machine. The 'Cachesize' parameter is set to a much lower value than this:
       Can anyone tell me:
    1. Is this behaviour correct for this cache?
    2. How do we disable the cache?
    3. How do we restrict the size of the cache?
       Thanks.
    /regards,
    Conor.

    Hi Conor,
    ITS development is not aware of memory issues with PL 23.
    The memory the template cache allocates does not depend on the "Cachesize" parameter. This parameter is for RFC connections of flowlogic services.
    If after PL 23 you have Mozilla user you haven't before this would explain the increase of the template cache memory consumption. For each browser and language the amount of memory in the templates cache increases.
    You surely could disable the templates cache but this would hit performance (switch parameter StaticTemplates to 0 in ITS Admin - <Your_Instance> Configuration - Performance). On each template access the template would have to be parsed again. This switch is intended for a development environment only.
    The best you can do is to setup ITS server on 64-Bit OS and 64-Bit ITS 6.20 executables. On 64-Bit you can forget about memory issues due 32-Bit address space limitations.
    If you this is not possible you have to reduce the memory by
    - forwarding requests with specific languages to specific ITS instances
    - forwarding request from Browsers like Mozilla to a specific ITS instances
    - checking peak values in ITS Admin Overview and tune parameters MaxSessions, MaxWorkthreads accordingly. Be carefull!!
    SAP note 720428 gives you advise about the most important ITS 6.20 parameters.
    Best regards,
    Klaus

  • Problems updating projects to new versions of Premiere (CS5 to CC and CC to CC 2014) Memory consumption during re-index and Offline MPEG Clips in CC 2014

    I have 24GB of RAM in my 64 bit Windows 7 system running on RAID 5 with an i7 CPU.
    A while ago I updated from Premiere CS5 to CC and then from Premiere CC to CC 2014. I updated all my then current projects to the new version as well.
    Most of the projects contained 1080i 25fps (1080x1440 anamorphic) MPEG clips originally imported (captured from HDV tape) from a Sony HDV camera using Premiere CS5 or CC.
    Memory consumption during re-indexing.
    When updating projects I experienced frequent crashes going from CS5 to CC and later going from CC to CC 2014. Updating projects caused all clips in the project to be re-indexed. The crashes were due to the re-indexing process causing excessive RAM consumption and I had to re-open each project several times before the re-index would eventually complete successfully. This is despite using the setting to limit the RAM consumed by Premiere to much less than the 24GB RAM in my system.
    I checked that clips played; there were no errors generated; no clips showed as Offline.
    Some Clips now Offline:Importer  CC 2014
    Now, after some months editing one project I found some of the MPEG clips have been flagged as "Offline: Importer" and will not relink. The error reported is "An error occurred decompressing video or audio".
    The same clips play perfectly well in, for example, Windows Media Player.
    I still have the earlier Premiere CC and the project file and the clips that CC 2014 importer rejects are still OK in the Premiere CC version of the project.
    It seems that the importer in CC 2014 has a bug that causes it to reject MPEG clips with which earlier versions of Premiere had no problem.
    It's not the sort of problem expected with a premium product.
    After this experience, I will not be updating premiere mid-project ever again.
    How can I get these clips into CC 2014? I can't go back to the version of the project in Premiere CC without losing hours of work/edits in Premiere CC 2014.
    Any help appreciated. Thanks.

    To answer my own question: I could find no answer to this myself and, with there being no replies in this forum, I have resorted to re-capturing the affected HDV tapes from scratch.
    Luckily, I still had my HDV camera and the source tapes and had not already used any of the clips that became Offline in Premiere Pro CC 2014.
    It seems clear that the MPEG importer in Premiere Pro CC 2014 rejects clips that Premiere Pro CC once accepted. It's a pretty horrible bug that ought to be fixed. Whether Adobe have a workaround or at least know about this issue and are working on it is unknown.
    It also seems clear that the clip re-indexing process that occurs when upgrading a project (from CS5 to CC and also from CC to CC 2014) has a bug which causes memory consumption to grow continuously while it runs. I have 24GB RAM in my system and regardless of the amount RAM I allocated to Premiere Pro, it would eventually crash. Fortunately on restarting Premiere Pro and re-loading the project, re-indexing would resume where it left off, and, depending on the size of the project (number of clips to be indexed), after many repeated crashes and restarts re-indexing would eventually complete and the project would be OK after that.
    It also seems clear that Adobe support isn't the greatest at recognising and responding when there are technical issues, publishing "known issues" (I could find no Adobe reference to either of these issues) or publishing workarounds. I logged the re-index issue as a bug and had zero response. Surely I am not the only one who has experienced these particular issues?
    This is very poor support for what is supposed to be a premium product.
    Lesson learned: I won't be upgrading Premiere again mid project after these experiences.

  • Query on memory consumption during SQL

    Hi SAP Gurus,
    Could I kindly request for your inputs concerning the following scenario?
    To put it quite simply, we have a program where we're required to retrieve all the fields from a lengthy custom table, i.e. the select statement uses an asterisk.  Unfortunately, there isn't really a way to avoid this short of a total overhaul of the code, so we had to settle with this (for now).
    The program retrieves from the database table using a where clause filtering only to a single value company code.  Kindly note that company code is not the only key in the table.  In order to help with the memory consumption, the original developer had employed retrieval by packages (also note that the total length of each record is 1803...).
    The problem encountered is as follows:
    - Using company code A, retrieving for 700k entries in packages of 277, the program ran without any issues.
    - However, using company code B, retrieving for 1.8m in packages of 277, the program encountered a TSV_TNEW_PAGE_ALLOC_FAILED short dump.  This error is encountered at the very first time the program goes through the select statement, ergo it has not even been able to pass through any additional internal table processing yet.
    About the only biggest difference between the two company codes is the number of corresponding records they have in the table.  I've checked if company code B had more values in its columns than company code A.  However, they're just the same.
    What I do not quite understand is why memory consumption changed just by changing the company code in the selection.  I thought that the memory consumed by both company codes should be the same... at least, in the beginning, considering that we're retrieving by packages, so we're not trying to get all of the records all at once.  However, the fact that it failed at the very beginning has shown me that I'm gravely mistaken.
    Could someone please enlighten me on how memory is consumed during database retrieval?
    Thanks!

    Hi,
    with FAE (FOR ALL ENTRIES) the whole query even for a single record in the itab is executed and all results for
    the company code are transfered from the database to the DBI since the duplicates will be removed by the DBI
    not by the database.
    If you use package size the resultset is buffered in a system table in the DBI (which allocates memory from your user quota). And from there on the package sizes are built and handed over to your application (into table lt_temp).
    see recent ABAP documentation:
    Since duplicate rows are only removed on the application server, all rows specified using the WHERE condition are sometimes transferred to an internal system table and aggregated here. This system table has the same maximum size as the normal internal tables. The system table is always required if addition PACKAGE SIZE or UP TO n ROWS is used at the same time. These do not affect the amount of rows transferred from the database server to the application server; instead, they are used to transfer the rows from the system table to the actual target area.
    What you should do:
    calculate the size needed for your big company code B. How many row  multiplied with line length.
    That is the minimum amount you need for your user memory quota. (quotas can be checked with
    ABAP report RSMEMORY) If the amount of memory is sufficient then try without packagesize.
    SELECT * FROM <custom table>
    INTO TABLE lt_temp
    FOR ALL ENTRIES IN lt_bukrs
    WHERE bukrs = lt_bukrs-bukrs
    ORDER BY primary key.
    This might actually use less memory than the package size option for the FOR ALL ENTRIES.
    Since with FAE it is buffered anyway in the DBI (and subtracted from your quota) you can
    do it right away and avoid double saving portions (the DBI buffer and a portion of that in the
    packe in lt_temp).
    If the amount of memory is still too big, you have to either increase the quotas or select
    less data (additional where conditions) or avoid using FAE in this case in order to not read all
    the data in one go.
    Hope this helps,
    Hermann

  • Integration Builder Memory Consumption

    Hello,
    we are experiencing very high memory consumption of the Java IR designer (not the directory). Especially for loading normal graphical idoc to EDI mappings, but also for normal idoc to idoc mappings. examples (RAM on client side):
    - open normal idoc to idoc mapping: + 40 MB
    - idoc to edi orders d93a: + 70 MB
    - a second idoc to edi orders d93a: + 70 MB
    - Execute those mappings: no additional consumption
    - third edi to edi orders d93a: + 100 MB
    (alle mappings in same namespace)
    After three more mappings RAM on client side goes on 580 MB and then Java heap error. Sometimes also OutOfMemory, then you have to terminate the application.
    Obviously the mapping editor is not quite will optimized for RAM usage. It seems to not cache the in/out message structures. Or it loads for every mapping very much dedicated functionality.
    So we cannot really call that fun. Working is very slow.
    Do you have similar experiences ? Are there workarounds ? I know the JNLP mem setting parameters, but the problem is the high load of each mapping, not only the overall maximum memory.
    And we are using only graphical mappings, no XSLT !
    We are on XI 3.0 SP 21
    CSY

    Hii
    Apart from raising tablespace..
    Note 425207 - SAP memory management, current parameter ranges
    you have configure operation modes to change work processes dynamically using rz03,rz04.
    Please see the below link
    http://help.sap.com/saphelp_nw04s/helpdata/en/c4/3a7f53505211d189550000e829fbbd/frameset.htm
    You can Contact your Basis administrator for necessary action

  • Check Process memory consumption and Kill it

    Hello
    I have just installed Orchestrator and have a problem that I think is perfekt for Orchestrator to handle.
    I have a process that sometimes hangs and the only way to spot it is that the memory consumption has stoped.
    The process is started every 15 minutes and scans a folder, if it finds a file it reads the file to a system. You can see that it is working by the increasing Memory consumption. If the read fails then the memory consumption stops. The process is still working
    and is responding but is hung.
    I'm thinking about doing a runbook that checks the memory-consumption every 5 minutes and compares it with the previous value. if the last three values are the same then I will kill the process and start it again.
    My problem is that I have not found a way to check the memory consumption of a process.
    I have set up a small test, just verify that I get the correct process, with the activity Monitor process -> Get Process Status -> Append Line (process name).
    But How do I get the process memory consumption?
    /Anders

    Now that I think about it a bit more I don't think there will be an easy way to set up a monitor for your situation in SCOM. Not that it couldn't be done, just not easily. Getting back to SCORCH. What you are trying to do isn't an every day kind of
    scenario. I don't think there is a built in activity for this.
    The hardest thing to overcome whether you use SCORCH or SCOM is likely going to be determining the error condition of three consecutive samples of the same memory usage. you'll need a way to track the samples. I can't think of a good way to do
    this without utilizing scripting.

  • High memory consumption in XSL transformations (XSLT)

    Hello colleagues!
    We have the problem of a very high memory consumption when transforming XML
    files with CALL TRANSFORMATION.
    Code example:
    CALL TRANSFORMATION /ipro/wml_translate_cls_ilfo
                SOURCE XML lx_clause_text
                RESULT XML lx_temp.
    lx_clause_text is a WordML xstring (i.e. it is a Microsoft Word file in XML
    format) and can therefore not be easily splitted into several parts.
    Unfortunately this string can get very huge (e.g. 50MB). The problem is that
    it seems that CALL TRANSFORMATION allocates memory for the source and result
    xstrings but doesn't free them after the transformation.
    So in this example this would mean that the transformation allocates ~100MB
    memory (50MB for source, ~50MB for result) and doesn't free it. Multiply
    this with a couple of transformations and a good amount of users and you see
    we get in trouble.
    I found this note regarding the problem: 1081257
    But we couldn't figure out how this problem could be solved in our case. The
    note proposes to "use several short-running programs". What is meant with
    this? By the way, our application is done with Web Dynpro for ABAP.
    Thank you very much!
    With best regards,
    Mario Düssel

    Hi,
    q1. how come the Ram consumption is increased to 99% on all the three boxes?If we continue with the theory that network connectivity was lost between the hosts, the Coherence servers on the local hosts would form their own clusters. Prior to the "split", each cache server would hold 1/12 of the primary and 1/12 of the backup (assuming you have one backup). Since Coherence avoids selecting a backup on the same host as the primary when possible, the 4 servers on each host would hold 2/3 of the cache. After the spit, each server would hold 1/6 of the primary and 1/6 of the backup, i.e., twice the memory it previously consumed for the cache. It is also possible that a substantial portion of the missing 1/3 of the cache may be restored from the near caches, in which case, each server would then hold 1/4 of the primary and 1/4 of the backup, i.e., thrice the memory it previously consumed for the cache.
    q2: where is the cache data stored in the coherence servers?on which memory?The cache data is typically stored in the jvm's heap memory area.
    Have you reviewed the logs?
    Regards,
    Harv

  • Query on Memory consumption of an object

    Hi,
    I am able to get information on the number of instances loaded, the memory occupied by those instances using heap histogram.
    Class      Instance Count      Total Size
    class [C      10965      557404
    class [B      2690      379634
    class [S      3780      220838
    class java.lang.String      10807      172912 Is there way to get detailed info like, String object of which class consume much memory.
    In other words,
    The memory consumption of String is 172912. can I have a split up like
    String Objects of Class A - 10%
    String Objects of Class B - 90%
    Thanks

    I don't know what profiler you are using but many memory profilers can tell you where the strings are allocated.

  • Dbxml memory consumption

    I have a query that returns about 10MB worth of data when run against my db -- it looks something like the following
    'for $doc in collection("VcObjStore")/doc
    where $doc[@type="Foo"]
    return <item>{$doc}</item>'
    when I run this query in dbxml.exe, I see memory footprint (of dbxml.exe) increase 125MB. Once query finishes, it comes back down.
    I expected memory consumption to be somewhat larger than what the query actually returns but this seems quite extreme.
    Is this behavior expected? What is a general rule of thumb on memory usage with respect to result size (is it really 10x)? Any way to make it less of a hog?
    Thanks

    Hi Ron,
    Thanks for a quick reply!
    - I wasn't actually benchmarking DBXML. We've observed large memory consumption during query execution in our test application and verified the same issue with dbxml.exe. Since dbxml.exe is well understood by everyone familiar with DBXML, I thought it would help starting with that.
    - Yes, an environment was created for this db. Here is the code we used to set it up
    EnvironmentConfig envConfig = new EnvironmentConfig();
    envConfig.setInitializeLocking(true);
    envConfig.setInitializeCache(true);
    envConfig.setAllowCreate(true);
    envConfig.setErrorStream(System.err);
    envConfig.setCacheSize(1024 * 1024 * 100);
    - I'd like an explanation on reasons behind the performance difference between these two queries
    Query 1:
    dbxml> time query 'for $doc in collection("VcObjStore")/doc
    where $doc[@type="VirtualMachine"]
    return $doc'
    552 objects... <snip>
    Time in seconds for command 'query': 0.031
    Query 2:
    dbxml> time query 'for $doc in collection("VcObjStore")/doc
    where $doc[@type="VirtualMachine"]
    return <val>{$doc}</val>'
    552 objects... <snip>
    Time in seconds for command 'query': 5.797
    - Any way to make the query #2 go as fast as #1?
    Thanks!

Maybe you are looking for