{"id":1592,"date":"2015-08-19T11:39:23","date_gmt":"2015-08-19T11:39:23","guid":{"rendered":"http:\/\/mevss.jku.at\/?page_id=1592"},"modified":"2019-08-06T09:38:11","modified_gmt":"2019-08-06T09:38:11","slug":"anttracks","status":"publish","type":"page","link":"http:\/\/mevss.jku.at\/?page_id=1592","title":{"rendered":"AntTracks"},"content":{"rendered":"<h1>AntTracks &#8211; Memory Monitoring using Accurate and Efficient Object Tracing for Java Applications<\/h1>\n<div class=\"responsive-tabs\">\n<h2 class=\"tabtitle\">Overview<\/h2>\n<div class=\"tabcontent\">\n\n<p><!--\n\n\n\n<style>\nfigure {<br \/>display: inline-block;<br \/>margin: 20px; \/* adjust as needed *\/<br \/>}<br \/>figure img {<br \/>vertical-align: top;<br \/>}<br \/>figure figcaption {<br \/>text-align: center;<br \/>}<br \/><\/style>\n\n\n\n--><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignright\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2012\/11\/dynatrace-logo_black_font-300x53.png\" alt=\"\" width=\"197\" height=\"35\" \/><\/p>\n<p>Object allocations and garbage collection can have a considerable impact on the performance of Java applications.<br \/>\nWithout monitoring tools, such performance problems are hard to track down, and if such tools are applied, they often cause a significant overhead and tend to distort the behavior of the monitored application.<\/p>\n<h2>Overview<\/h2>\n<h4>AntTracks VM: Tracing<\/h4>\n<p>Using the AntTracks VM, you can execute and trace any Java application.<br \/>\nThe VM will track every allocation, i.e., the allocation site (including the calling frames for frequent allocations), the allocated type, the allocating thread, the object size, as well as a number of other properties as well as object movements throughout the heap, and object deaths, i.e., when they are reclaimed by the garbage collector.<\/p>\n<p>In the paper <a href=\"http:\/\/dx.doi.org\/10.1145\/2668930.2688037\">Accurate and Efficient Object Tracing for Java Applications<\/a> we proposed a novel light-weight memory monitoring approach in which we trace allocations, deallocations and movements of objects using VM-specific knowledge. Information about these events is written into files for offline inspection in an analysis tool. The average run-time overhead is 4.68%, which seems to be fast enough for keeping tracing switched on even in production mode.<\/p>\n<figure style=\"width: 342px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/dx.doi.org\/10.1145\/2668930.2688037\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2015\/08\/AllocationInformation.png\" alt=\"Allocation Information\" width=\"342\" height=\"119\" \/><\/a><figcaption class=\"wp-caption-text\">Information recorded for every object allocation.<\/figcaption><\/figure>\n<p>To keep the size of the generated trace files as small as possible, we presented different concepts such as on-the-fly-compression during trace generation or trace file rotation. More details on this can be found in <a href=\"http:\/\/dx.doi.org\/10.1145\/2851553.2851555\">Efficient and Viable Handling of Large Object Traces<\/a>.<\/p>\n<figure id=\"attachment_3160\" aria-describedby=\"caption-attachment-3160\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/compression.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3160 size-medium\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/compression-300x206.png\" alt=\"Compression\" width=\"300\" height=\"206\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/compression-300x206.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/compression.png 690w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-3160\" class=\"wp-caption-text\">Compression to reduce trace file size<\/figcaption><\/figure>\n<p>Beside an object&#8217;s type and its allocation site, the objects it references and the objects it is reference by are the most valuable information to resolve memory problems. In <a href=\"http:\/\/dx.doi.org\/10.1145\/2972206.2972220\">Efficient Memory Traces with Full Pointer Information<\/a> we describe how information about the references between objects can be recorded and reconstructed with minimal overhead.<\/p>\n<figure id=\"attachment_3164\" aria-describedby=\"caption-attachment-3164\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/pointers.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3164 size-medium\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/pointers-300x76.png\" alt=\"\" width=\"300\" height=\"76\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/pointers-300x76.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/pointers.png 664w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-3164\" class=\"wp-caption-text\">Pointer events in AntTracks.<\/figcaption><\/figure>\n<h4>AntTracks Analyzer: Reconstruction and Memory Analysis<\/h4>\n<p>Our approach allows us to reconstruct the heap for any point in time and to do offline analyses on both the heap and on the trace. <a href=\"http:\/\/dx.doi.org\/10.1145\/2807426.2807433\">Efficient Rebuilding of Large Java Heaps from Event Traces <\/a>explains how the events in a trace file can be parsed and processed concurrently, as well as how heap states can be reconstructed from a trace file.<\/p>\n<figure id=\"attachment_3166\" aria-describedby=\"caption-attachment-3166\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/heap.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3166 size-medium\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/heap-300x131.png\" alt=\"\" width=\"300\" height=\"131\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/heap-300x131.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/heap.png 641w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-3166\" class=\"wp-caption-text\">AntTracks&#8217;s data structure to store reconstructed heap objects.<\/figcaption><\/figure>\n<p><a href=\"http:\/\/dx.doi.org\/10.1145\/3030207.3030236\">User-centered Offline Analysis of Memory Monitoring Data<\/a> and <a href=\"https:\/\/doi.org\/10.1145\/3184407.3184412\">User-defined Classification and Multi-level Grouping of Objects in Memory Monitoring<\/a> present AntTracks&#8217;s heap state inspection. Once the heap for a certain point in time is reconstructed, users can select various classifiers, i,e., grouping criteria, based on which the heap&#8217;s objects get grouped by. Further, users can write new classifiers for detailed analysis based on their needs.<\/p>\n<figure id=\"attachment_3169\" aria-describedby=\"caption-attachment-3169\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/classifierselection-1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3169 size-medium\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/classifierselection-1-300x110.png\" alt=\"\" width=\"300\" height=\"110\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/classifierselection-1-300x110.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/classifierselection-1.png 330w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-3169\" class=\"wp-caption-text\">Filters and classifiers can be freely combined in AntTracks.<\/figcaption><\/figure>\n<p>Heap objects stay alive because they are (indirectly) reachable from so-called GC roots such as static fields or thread locals. <a href=\"https:\/\/doi.org\/10.1145\/3237009.3237023\">Utilizing Object Reference Graphs and Garbage Collection Roots to Detect Memory Leaks in Offline Memory Monitoring<\/a> shows how information about GC roots can be collected into memory traces and how this information can be used in the Analyzer tool to find suspicious objects with a large ownership, i.e, those objects that keep alive a lot of other objects.<\/p>\n<figure id=\"attachment_3170\" aria-describedby=\"caption-attachment-3170\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/reachable.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3170 size-medium\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/reachable-300x116.png\" alt=\"\" width=\"300\" height=\"116\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/reachable-300x116.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/reachable-768x296.png 768w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/07\/reachable.png 810w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-3170\" class=\"wp-caption-text\">GC roots keep heap objects alive.<\/figcaption><\/figure>\n<p>Memory leaks are often caused by incorrectly handled data structures. For example, a developer may forget to remove objects from their containing data structures. These objects cannot be reclaimed by the garbage collector and will therefore accumulate over time. In <a href=\"http:\/\/www.performance-symposium.org\/fileadmin\/user_upload\/palladio-conference\/2018\/papers\/WeningerGanderMoessenboeck18.pdf\">Analyzing the Evolution of Data Structures in Trace-Based Memory Monitoring<\/a> and <a href=\"https:\/\/doi.org\/10.1145\/3297663.3310297\">Analyzing Data Structure Growth Over Time to Facilitate Memory Leak Detection <\/a>we present novel techniques how to ease the inspection of memory leaks that are caused by data structures. Data structures are described using a DSL. The AntTracks analyzer is then able to detect instances of these data structures and automatically detects those data structures that exhibit the strongest growth, an indication for a possible memory leak.<\/p>\n<figure id=\"attachment_3174\" aria-describedby=\"caption-attachment-3174\" style=\"width: 2060px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/approach1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3174 size-full\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/approach1.png\" alt=\"\" width=\"2060\" height=\"347\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/approach1.png 2060w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/approach1-300x51.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/approach1-768x129.png 768w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/approach1-1024x172.png 1024w\" sizes=\"(max-width: 2060px) 100vw, 2060px\" \/><\/a><figcaption id=\"caption-attachment-3174\" class=\"wp-caption-text\">Data Structure Analysis<\/figcaption><\/figure>\n<p>Visualizations are used in various domains to support the transfer of information. In <a href=\"https:\/\/doi.org\/10.1145\/3302541.3313100\">AntTracks TrendViz: Configurable Heap Memory Visualization Over Time <\/a>we present how time-series charts in combination with a drill-down approach can be used to visualize an application&#8217;s memory evolution over time.<\/p>\n<figure id=\"attachment_3175\" aria-describedby=\"caption-attachment-3175\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/paper_easytravel_objectgrouptrend.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3175 size-medium\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/paper_easytravel_objectgrouptrend-300x280.png\" alt=\"\" width=\"300\" height=\"280\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/paper_easytravel_objectgrouptrend-300x280.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/paper_easytravel_objectgrouptrend.png 620w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-3175\" class=\"wp-caption-text\">AntTracks TrendViz: Visualizing memory evolution over time using time-series charts and drill-down operations.<\/figcaption><\/figure>\n<h2>About<\/h2>\n<p>This site provides downloads of our virtual machine and the analysis tool as well as tutorials on how to use both of them.<\/p>\n<p>The following introduction (&#8220;Cheat Sheet&#8221;) explains the basic features of AntTracks and their usage. Please use it to get started: <a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/AntTracks-Cheat-Sheet-1.pdf\">AntTracks Introduction (&#8220;Cheat Sheet&#8221;)<\/a><\/p>\n<p>This project is a cooperation of the Institute for System Software, the Christian Doppler Laboratory for Monitoring and Evolution of Very-large-scale Software Systems and Dynatrace Austria.<\/p>\n<h4>Sreenshots of the AntTracks Analyzer (2019):<\/h4>\n<figure id=\"attachment_3180\" aria-describedby=\"caption-attachment-3180\" style=\"width: 2195px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3180 size-full\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1.png\" alt=\"\" width=\"2195\" height=\"1172\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1.png 2195w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1-300x160.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1-768x410.png 768w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1-1024x547.png 1024w\" sizes=\"(max-width: 2195px) 100vw, 2195px\" \/><\/a><figcaption id=\"caption-attachment-3180\" class=\"wp-caption-text\">AntTracks Trace Overview<\/figcaption><\/figure>\n<figure id=\"attachment_3182\" aria-describedby=\"caption-attachment-3182\" style=\"width: 1617px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-3182\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2.png\" alt=\"\" width=\"1617\" height=\"850\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2.png 1617w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2-300x158.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2-768x404.png 768w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2-1024x538.png 1024w\" sizes=\"(max-width: 1617px) 100vw, 1617px\" \/><\/a><figcaption id=\"caption-attachment-3182\" class=\"wp-caption-text\">AntTracks Heap State Analysis<\/figcaption><\/figure>\n<figure><\/figure>\n<figure id=\"attachment_3184\" aria-describedby=\"caption-attachment-3184\" style=\"width: 1827px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3184 size-full\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3.png\" alt=\"\" width=\"1827\" height=\"1126\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3.png 1827w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3-300x185.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3-768x473.png 768w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3-1024x631.png 1024w\" sizes=\"(max-width: 1827px) 100vw, 1827px\" \/><\/a><figcaption id=\"caption-attachment-3184\" class=\"wp-caption-text\">Garbage Collection Analysis in AntTracks<\/figcaption><\/figure>\n<h4>Team<\/h4>\n<ul>\n<li><a href=\"http:\/\/ssw.jku.at\/General\/Staff\/Weninger\/\">Markus Weninger<\/a> &#8211; Researcher<\/li>\n<li><a href=\"http:\/\/mevss.jku.at\/?page_id=2564\">Elias Gander<\/a> &#8211; Student Researcher<\/li>\n<\/ul>\n<h4>Former Team Members<\/h4>\n<ul>\n<li><a href=\"http:\/\/www.ssw.jku.at\/General\/Staff\/PL\/\">Philipp Lengauer<\/a> &#8211; Researcher<\/li>\n<li><a href=\"http:\/\/mevss.jku.at\/?page_id=401\">Verena Bitto<\/a> &#8211; Researcher<\/li>\n<li>Stefan Fitzek &#8211; Student Researcher<\/li>\n<li>Ongoing student contributions<\/li>\n<\/ul>\n<p>\n<\/div><h2 class=\"tabtitle\">Downloads<\/h2>\n<div class=\"tabcontent\">\n<br \/>\n<!-- Please cite as: <a href=\"http:\/\/dx.doi.org\/10.1145\/2807426.2807433\">Accurate and Efficient Object Tracing for Java Applications<\/a>, in Proceedings of the 6th ACM\/SPEC International Conference on Performance Engineering (ICPE'15), Austin, TX, USA, 2015 --><br \/>\nDownload both, the AntTracks VM and the AntTracks Analyzer tool here: <a href=\"http:\/\/ssw.jku.at\/General\/Staff\/Weninger\/AntTracks\/Publish\">Download<\/a><\/p>\n<p><em>Please note that the analysis tool is a prototype and under development. For questions, bug reports, feature requests, contributions, and\/or collaborations, please contact <a href=\"http:\/\/www.ssw.jku.at\/General\/Staff\/Weninger\">Markus Weninger<\/a>.<\/em><\/p>\n<p>\n<\/div><h2 class=\"tabtitle\">Usage<\/h2>\n<div class=\"tabcontent\">\n<br \/>\nThe virtual machine can be installed and used just as any other Java virtual machine. Without any additional parameters, it also behaves exactly like the Oracle Hotspot VM.<\/p>\n<p>To enable object tracing, set the VM flag &#8220;TraceObjects&#8221; or &#8220;TraceObjectsPointers&#8221; by adding &#8220;-XX:+TraceObjects&#8221; or &#8220;-XX:+TraceObjectsPointers&#8221; right after the java command. If you run an arbitrary Java application with this flag, three files, named &#8220;symbols&#8221;, &#8220;class_def&#8221; and &#8220;trace&#8221;, will be written. They contain the full information that has been collected for the application and can be inspected in the AntTracks Analyzer tool.<\/p>\n<p>The following introduction (&#8220;Cheat Sheet&#8221;) explains the basic features of AntTracks and their usage. Please use it to get started: <a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/AntTracks-Cheat-Sheet-1.pdf\">AntTracks Introduction (&#8220;Cheat Sheet&#8221;)<\/a><\/p>\n\n<\/div><h2 class=\"tabtitle\">Publications<\/h2>\n<div class=\"tabcontent\">\n\n<ul>\n<li><a href=\"https:\/\/doi.org\/10.1145\/3297663.3310297\">Analyzing Data Structure Growth Over Time to Facilitate Memory Leak Detection<\/a>, in\u00a0Proceedings of the 10th ACM\/SPEC International Conference on Performance Engineering (ICPE 2019), Mumbai, India, 2019.<\/li>\n<li><a href=\"https:\/\/doi.org\/10.1145\/3302541.3313100\">AntTracks TrendViz: Configurable Heap Memory Visualization Over Time<\/a>, in\u00a0Proceedings of the 10th ACM\/SPEC International Conference on Performance Engineering (ICPE 2019), Mumbai, India, 2019.<\/li>\n<li><a href=\"http:\/\/www.performance-symposium.org\/fileadmin\/user_upload\/palladio-conference\/2018\/papers\/WeningerGanderMoessenboeck18.pdf\">Analyzing the Evolution of Data Structures in Trace-Based Memory Monitoring<\/a>, in the Proceedings of the 9th Symposium on Software Performance (SSP2018), Hildesheim, Germany, 2018.<\/li>\n<li><a href=\"https:\/\/doi.org\/10.1145\/3237009.3237023\">Utilizing Object Reference Graphs and Garbage Collection Roots to Detect Memory Leaks in Offline Memory Monitoring<\/a>, in<br \/>\nProceedings of the 15th International Conference on Managed Languages &amp; Runtimes (ManLang 2018), Linz, Austria, 2018.<\/li>\n<li><a href=\"https:\/\/doi.org\/10.1145\/3184407.3184412\">User-defined Classification and Multi-level Grouping of Objects in Memory Monitoring<\/a>, in the Proceedings of the 9th ACM\/SPEC International Conference on Performance Engineering (ICPE 2018), Berlin, Germany, 2018.<\/li>\n<li><a href=\"http:\/\/dx.doi.org\/10.1145\/3030207.3030236\">User-centered Offline Analysis of Memory Monitoring Data<\/a>, in the Proceedings of the 8th ACM\/SPEC International Conference on Performance Engineering (ICPE&#8217;17), L&#8217;Aquila, Italy, 2017<\/li>\n<li><a href=\"https:\/\/doi.org\/10.1145\/3030207.3030211\">A Comprehensive Java Benchmark Study on Memory and Garbage Collection Behavior of DaCapo, DaCapo Scala, and SPECjvm2008<\/a>, in the Proceedings of the 8th ACM\/SPEC International Conference on Performance Engineering (ICPE&#8217;17), L&#8217;Aquila, Italy, 2017<\/li>\n<li><a href=\"http:\/\/dx.doi.org\/10.1145\/2972206.2972220\">Efficient Memory Traces with Full Pointer Information<\/a>, in Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools (PPPJ&#8217;16), Lugano, Switzerland, 2016<\/li>\n<li><a href=\"http:\/\/ssw.jku.at\/General\/Staff\/PL\/ICPE16_tutorial_slides.zip\">Building Custom, Efficient and Accurate Memory Monitoring Tools for Java Application<\/a> Tutorial at the 7th ACM\/SPEC International Conference on Performance Engineering (ICPE&#8217;16), Delft, Netherlands, 2016<\/li>\n<li><a href=\"http:\/\/dx.doi.org\/10.1145\/2851553.2858664\">Building Custom, Efficient and Accurate Memory Monitoring Tools for Java Application<\/a> in the Proceedings of the 7th ACM\/SPEC International Conference on Performance Engineering (ICPE&#8217;16), Delft, Netherlands, 2016<\/li>\n<li><a href=\"http:\/\/dx.doi.org\/10.1145\/2851553.2851555\">Efficient and Viable Handling of Large Object Traces<\/a>, in Proceedings of the 7th ACM\/SPEC International Conference on Performance Engineering (ICPE&#8217;16), Delft, Netherlands, 2016<\/li>\n<li><a href=\"http:\/\/dx.doi.org\/10.1145\/2807426.2807433\">Efficient Rebuilding of Large Java Heaps from Event Traces<\/a>, in Proceedings of the 12th ACM International Conference on Principles and Practice of Programming on the Java Platform: virtual machines, languages, and tools (PPPJ&#8217;15), Melbourne, FL, USA, 2015<\/li>\n<li><a href=\"http:\/\/dx.doi.org\/10.1145\/2668930.2688037\">Accurate and Efficient Object Tracing for Java Applications<\/a>, in Proceedings of the 6th ACM\/SPEC International Conference on Performance Engineering (ICPE&#8217;15), Austin, TX, USA, 2015<\/li>\n<li>Post-Mortem Memory Profiling for Java Applications, Master&#8217;s Thesis Philipp Lengauer, Johannes Kepler University, Linz, Austria, 2015<\/li>\n<\/ul>\n\n<\/div><h2 class=\"tabtitle\">Media<\/h2>\n<div class=\"tabcontent\">\n\n<h2>AntTracks Introduction (&#8220;Cheat Sheet&#8221;)<\/h2>\n<p>The following introduction (&#8220;Cheat Sheet&#8221;) explains the basic features of AntTracks and their usage. Please use it to get started: <a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/AntTracks-Cheat-Sheet-1.pdf\">AntTracks Introduction (&#8220;Cheat Sheet&#8221;)<\/a><\/p>\n<h4>Sreenshots (Aug 2019):<\/h4>\n<figure id=\"attachment_3180\" aria-describedby=\"caption-attachment-3180\" style=\"width: 2195px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3180 size-full\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1.png\" alt=\"\" width=\"2195\" height=\"1172\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1.png 2195w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1-300x160.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1-768x410.png 768w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant1-1024x547.png 1024w\" sizes=\"(max-width: 2195px) 100vw, 2195px\" \/><\/a><figcaption id=\"caption-attachment-3180\" class=\"wp-caption-text\">AntTracks Trace Overview<\/figcaption><\/figure>\n<figure id=\"attachment_3182\" aria-describedby=\"caption-attachment-3182\" style=\"width: 1617px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-3182\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2.png\" alt=\"\" width=\"1617\" height=\"850\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2.png 1617w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2-300x158.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2-768x404.png 768w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant2-1024x538.png 1024w\" sizes=\"(max-width: 1617px) 100vw, 1617px\" \/><\/a><figcaption id=\"caption-attachment-3182\" class=\"wp-caption-text\">AntTracks Heap State Analysis<\/figcaption><\/figure>\n<figure><\/figure>\n<figure id=\"attachment_3184\" aria-describedby=\"caption-attachment-3184\" style=\"width: 1827px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-3184 size-full\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3.png\" alt=\"\" width=\"1827\" height=\"1126\" srcset=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3.png 1827w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3-300x185.png 300w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3-768x473.png 768w, http:\/\/mevss.jku.at\/wp-content\/uploads\/2019\/08\/ant3-1024x631.png 1024w\" sizes=\"(max-width: 1827px) 100vw, 1827px\" \/><\/a><figcaption id=\"caption-attachment-3184\" class=\"wp-caption-text\">Garbage Collection Analysis in AntTracks<\/figcaption><\/figure>\n<h4>Screenshots (2016):<\/h4>\n<figure><figcaption><\/figcaption><\/figure>\n<figure><img decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2015\/08\/AntTracksTool.png\" alt=\"Tool - Overview\" \/><figcaption>Memory usage overview and detailed heap snapshot.<\/figcaption><figcaption><\/figcaption><\/figure>\n<figure><\/figure>\n<figure><\/figure>\n<figure><img decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/mevss.jku.at\/wp-content\/uploads\/2015\/08\/AntTracksToolAllocationSites.png\" alt=\"Tool - Allocation Sites\" \/><figcaption>Memory usage overview and detailed heap snapshot.<\/figcaption><\/figure>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>AntTracks &#8211; Memory Monitoring using Accurate and Efficient Object Tracing for Java Applications Object allocations and garbage collection can have a considerable impact on the performance of Java applications. Without monitoring tools, such performance problems are hard to track down, and if such tools are applied, they often cause a significant overhead and tend to &hellip; <a href=\"http:\/\/mevss.jku.at\/?page_id=1592\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">AntTracks<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/mevss.jku.at\/index.php?rest_route=\/wp\/v2\/pages\/1592"}],"collection":[{"href":"http:\/\/mevss.jku.at\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/mevss.jku.at\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/mevss.jku.at\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mevss.jku.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1592"}],"version-history":[{"count":69,"href":"http:\/\/mevss.jku.at\/index.php?rest_route=\/wp\/v2\/pages\/1592\/revisions"}],"predecessor-version":[{"id":3195,"href":"http:\/\/mevss.jku.at\/index.php?rest_route=\/wp\/v2\/pages\/1592\/revisions\/3195"}],"wp:attachment":[{"href":"http:\/\/mevss.jku.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}