MMalhado 0 Report post Posted December 3, 2015 I have built my webapp using a Excelsior JET 8 32bit Tomcat project and configured it to use an Adaptive heap size policy. My test setup is running Windows server 2012 R2. while performing long running height request throughput performance tests, I observed that during some periods of operation my application would have it's response capacity greatly degraded. Using a java profiler, I could see that during these periods the JVM was Garbage Collection aggressively and that the heap size was "stuck" at a certain threshold. This behavior led me to believe that I might be running out of available physical memory, and that the Excelcior JET's Adaptive policy might be avoiding requesting more heap space from the OS. Using task manager I could see that around 1.5GB were still available. In Windows Resource monitor I could see that most of these 1.5GB were marked as "Standby" memory and that only about 15MB were marked as free. As soon as I ran the System internals RAMMap tool and requested for the "Standby List" to be emptied, the JVM immediately reserved some 500MB additional memory and the GC activity was drastically reduced. These experiments lead me to believe that Excelsior only refers to the "Free" component of available physical memory when deciding if more heap space can/should be allocated. Is this interpretation correct? I would assume that all the available physical memory would be used as a reference for GC and heap size management. Share this post Link to post Share on other sites
dbg 0 Report post Posted December 4, 2015 I have built my webapp using a Excelsior JET 8 32bit Tomcat project and configured it to use an Adaptive heap size policy. My test setup is running Windows server 2012 R2. while performing long running height request throughput performance tests, I observed that during some periods of operation my application would have it's response capacity greatly degraded. Using a java profiler, I could see that during these periods the JVM was Garbage Collection aggressively and that the heap size was "stuck" at a certain threshold. This behavior led me to believe that I might be running out of available physical memory, and that the Excelcior JET's Adaptive policy might be avoiding requesting more heap space from the OS. Using task manager I could see that around 1.5GB were still available. In Windows Resource monitor I could see that most of these 1.5GB were marked as "Standby" memory and that only about 15MB were marked as free. As soon as I ran the System internals RAMMap tool and requested for the "Standby List" to be emptied, the JVM immediately reserved some 500MB additional memory and the GC activity was drastically reduced. These experiments lead me to believe that Excelsior only refers to the "Free" component of available physical memory when deciding if more heap space can/should be allocated. Is this interpretation correct? I would assume that all the available physical memory would be used as a reference for GC and heap size management. Hello, To enable using of "standby" memory in JET-compiled executables, you should specify -Djet.gc.sys.cache.care.level property. Please run the following commands: set JETVMPROP=-Djet.gc.sys.cache.care.level=2 <your_application>.exe Please let us know the results. Share this post Link to post Share on other sites
MMalhado 0 Report post Posted December 10, 2015 Hello, To enable using of "standby" memory in JET-compiled executables, you should specify -Djet.gc.sys.cache.care.level property. Please run the following commands: set JETVMPROP=-Djet.gc.sys.cache.care.level=2 <your_application>.exe Please let us know the results. Thanks dbg! Apparently that define did the trick! So far I have not observed the same behavior. I'll let you know if the situation changes. Share this post Link to post Share on other sites