The document discusses various approaches to managing resources in Java programs, including passive approaches like using finalization and phantom references to cleanup resources after objects are garbage collected, as well as noting some traps and limitations of these passive approaches including that finalization and phantom reference processing are not ordered and finalizers may access stale objects. It also covers active resource management approaches that require developers to explicitly close or cleanup resources.
This document discusses how the Java Virtual Machine (JVM) can support multiple languages. It describes how language features can be emulated on the JVM through additional layers of indirection. It outlines key features added in JDK 7 like invokedynamic bytecode and method handles to better support dynamic languages on the JVM by reducing overhead from emulation. The document argues that the JVM should optimize for non-Java language features to benefit both Java and other languages running on the platform.
This document provides an introduction and overview of the Java programming language and environment. It outlines the course content which will cover the history and evolution of Java, the Java programming environment including compilation and interpretation, key features such as platform independence and automatic memory management, and packages and tools. The document also provides examples of Java code for a simple "Hello World" application to demonstrate using the Java Development Kit.
In this core java training session, you will learn get introduction to Java. Topics covered in this session are:
• History of Java – A Programmer’s Perspective
• Salient Features of Java
• Major Java Editions
For more information about this course visit on this link: https://www.mindsmapped.com/courses/software-development/learn-java-fundamentals-hands-on-training-on-core-java-concepts/
1) The document discusses Java concepts across 5 doses: the Java Community Process, Java characteristics, terminology, platforms, and frameworks.
2) It covers key Java characteristics like being cross-platform, using object-oriented programming, having robust and good performance, and automatic memory management.
3) Important Java terminology is defined, like the Java Virtual Machine (JVM), Java Runtime Environment (JRE), and Java Development Kit (JDK).
4) The main Java platforms - Java SE, Java ME, and Java EE - are outlined, describing their uses for general applications, limited devices, and enterprise software respectively.
5) Popular Java frameworks for testing, building, GUIs, IDE
Maven provides standardized tools and processes for managing software projects. It uses conventions for project layout and dependencies, and a plugin-based architecture to automate common development tasks like building, testing, and packaging. While offering high customization, Maven aims to standardize best practices for project management.
JavaOne 2012 CON3978 Scripting Languages on the JVMPaulThwaite
The document discusses different methods of embedding scripting languages on the Java Virtual Machine (JVM). It describes how languages can be compiled to Java bytecode, interpreted on the JVM, or embedded within a Java application. It also examines models for scripting on the JVM, including having scripts invoke Java code or Java code invoke scripts. Finally, it compares two popular embedding frameworks.
This document discusses how the Java Virtual Machine (JVM) can support multiple languages. It describes how language features can be emulated on the JVM through additional layers of indirection. It outlines key features added in JDK 7 like invokedynamic bytecode and method handles to better support dynamic languages on the JVM by reducing overhead from emulation. The document argues that the JVM should optimize for non-Java language features to benefit both Java and other languages running on the platform.
This document provides an introduction and overview of the Java programming language and environment. It outlines the course content which will cover the history and evolution of Java, the Java programming environment including compilation and interpretation, key features such as platform independence and automatic memory management, and packages and tools. The document also provides examples of Java code for a simple "Hello World" application to demonstrate using the Java Development Kit.
In this core java training session, you will learn get introduction to Java. Topics covered in this session are:
• History of Java – A Programmer’s Perspective
• Salient Features of Java
• Major Java Editions
For more information about this course visit on this link: https://www.mindsmapped.com/courses/software-development/learn-java-fundamentals-hands-on-training-on-core-java-concepts/
1) The document discusses Java concepts across 5 doses: the Java Community Process, Java characteristics, terminology, platforms, and frameworks.
2) It covers key Java characteristics like being cross-platform, using object-oriented programming, having robust and good performance, and automatic memory management.
3) Important Java terminology is defined, like the Java Virtual Machine (JVM), Java Runtime Environment (JRE), and Java Development Kit (JDK).
4) The main Java platforms - Java SE, Java ME, and Java EE - are outlined, describing their uses for general applications, limited devices, and enterprise software respectively.
5) Popular Java frameworks for testing, building, GUIs, IDE
Maven provides standardized tools and processes for managing software projects. It uses conventions for project layout and dependencies, and a plugin-based architecture to automate common development tasks like building, testing, and packaging. While offering high customization, Maven aims to standardize best practices for project management.
JavaOne 2012 CON3978 Scripting Languages on the JVMPaulThwaite
The document discusses different methods of embedding scripting languages on the Java Virtual Machine (JVM). It describes how languages can be compiled to Java bytecode, interpreted on the JVM, or embedded within a Java application. It also examines models for scripting on the JVM, including having scripts invoke Java code or Java code invoke scripts. Finally, it compares two popular embedding frameworks.
JavaOne BOF 5957 Lightning Fast Access to Big DataBrian Martin
This document discusses IBM's WebSphere eXtreme Scale product, an in-memory data grid that provides lightning fast access to big data. Some key capabilities of the data grid include horizontal scalability, fault tolerance, data redundancy and replication. The data grid can be used to cache application state, HTTP sessions, and operational data to improve performance and scalability compared to traditional caching approaches. It also allows for distributed computing patterns like map-reduce processing.
Every few months, another Joe (or Jane) Shmoe decides it’s time to write an agenda-driven blog post (or presentation for a conference) that shows why a particular flavor of JPA blows all the other competitors out of the water. This session shows that, when properly used/tuned, the JPA implementations from the major providers (EclipseLink, Hibernate, and OpenJPA) all perform nearly the same.
Efficient Memory and Thread Management in Highly Parallel Java Applicationspkoza
This presentation discusses strategies to estimate and control the memory use of multi-threaded java applications. It includes a quick overview of how the JVM uses memory, followed by techniques to estimate the memory usage of various types of objects during testing. This knowledge is then used as the basis for a runtime scheme to estimate and control the memory use of multiple threads. The final part of the presentation describes how to implement robust handling for unchecked exceptions, especially Out Of Memory (OOM) errors, and how to ensure threads stop properly when unexpected events occur.
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...timfanelli
In this presentation, Tim Fanelli provides an introduction to JSR352 programming, and builds a simple application utilizing the JSR 352 chunk processing model.
The sample program presented may be downloaded here:
https://www.dropbox.com/s/55fsjt4ylny95hc/MySampleBatch.jar
Or, email Tim Fanelli - the contact information is on slide 3!
JavaOne 2013: Garbage Collection Unleashed - Demystifying the WizardryRyan Sciampacone
Garbage Collection Unleashed: Demystifying the Wizardry
JavaOne 2013 CON3948
Ryan A. Sciampacone, Senior Software Developer, IBM JTC
Abstract: Problems with garbage collection? Pauses too long? Maybe too frequent? Other than telling you to give your application more memory, does staring at the logs yield little to no information? Ready to throw your hands up in frustration? Many application developers struggle with understanding where they may have gone wrong from either a deployment or a development perspective when garbage collection becomes a suspect. This presentation aims to demystify some of the mechanics of garbage collection technologies by looking at a series of problems, mapping them back to the implementation in simple terms, and understanding what this means about the collection and your application and how to address the issue.
This document summarizes key aspects of memory management in RubyMotion. It discusses how Ruby uses garbage collection while iOS uses reference counting. Developers need to avoid retain cycles when objects strongly reference each other. Using WeakRef allows child objects to weakly reference parent objects to prevent retain cycles from occurring. The document demonstrates examples of retain cycles and how to avoid them using WeakRef. It also provides information on how to use Xcode Instruments to detect memory leaks and profile memory usage in RubyMotion applications.
The Right Pill for JRuby Memory and Thread Issues: Eclipse Memory AnalyzerVladimir Pavlov
This document discusses memory and thread issues that can occur with JRuby applications and how Eclipse Memory Analyzer can help address them. It provides an overview of Ruby and JRuby, common problems like memory leaks and thread issues, and how the Memory Analyzer tool works. It then describes a JRuby extension plugin for Memory Analyzer that can produce readable Ruby stack traces from heap dumps to help debug issues. Further enhancements are discussed along with a call for feedback.
Persistence is the storage of data that exists beyond a single session or process. There are three main ways to persist data using Hibernate: JDBC, Spring JDBC, and Hibernate itself. Hibernate provides an object-relational mapping tool that allows developers to treat a database as a collection of Java objects and provides transparent data persistence. It abstracts away many of the complexities of directly using JDBC.
Spring-
Spring framework is an open source Java platform that provides comprehensive infrastructure support for developing robust Java applications very easily and very rapidly. Spring framework was initially written by Rod Johnson and was first released under the Apache 2.0 license in June 2003.
Spring provides a very clean division between controllers, JavaBean models, and views.
Spring's MVC is very flexible. Unlike Struts, which forces your Action and Form objects into concrete inheritance (thus taking away your single shot at concrete inheritance in Java), Spring MVC is entirely based on interfaces. Furthermore, just about every part of the Spring MVC framework is configurable via plugging in your own interface. Of course we also provide convenience classes as an implementation option.
Spring, like WebWork, provides interceptors as well as controllers, making it easy to factor out behavior common to the handling of many requests.
Spring MVC is truly view-agnostic. You don't get pushed to use JSP if you don't want to; you can use Velocity, XLST or other view technologies. If you want to use a custom view mechanism – for example, your own templating language – you can easily implement the Spring View interface to integrate it.
Spring Controllers are configured via IoC like any other objects. This makes them easy to test, and beautifully integrated with other objects managed by Spring.
Spring MVC web tiers are typically easier to test than Struts web tiers, due to the avoidance of forced concrete inheritance and explicit dependence of controllers on the dispatcher servlet.
The web tier becomes a thin layer on top of a business object layer. This encourages good practice. Struts and other dedicated web frameworks leave you on your own in implementing your business objects; Spring provides an integrated framework for all tiers of your application.
In this session you will learn:
Understand the advantages of Java
Understand where Java is used
Understand how memory management is handled in Java
Create a Java project in Eclipse and execute it
Implement if..else construct in Java
Develop codes using various data types in Java
Implement various loops
For more information: https://www.mindsmapped.com/courses/software-development/become-a-java-developer-hands-on-training/
This document provides an overview of the Java programming language. It discusses Java's key features such as being robust, multithreaded, architecture-neutral, interpreted, high-performance, distributed, and dynamic. Additional features added in later Java releases include Java Beans, serialization, remote method invocation, database connectivity, and more. Since its inception, Java usage has spread across hardware development, standalone applications, client-server applications, distributed applications, and enterprise applications, establishing Java as a full-fledged technology.
This document discusses auditing reactive applications to detect blocking API calls. It describes how blocking calls can negatively impact performance in reactive systems by consuming thread pools. Various techniques for detecting blocking calls are examined, including modifying the JDK, generating warnings during compilation, and instrumenting code at runtime using a JVM agent. Aspect programming is highlighted as a way to audit applications at load time by weaving in checks for over 500 blocking methods across many Java APIs. The reactive-audit tool is introduced as an open source project for helping developers test for blocking calls in frameworks like Play, Jetty, and Akka.
Application Profiling for Memory and Performancepradeepfn
This document discusses application profiling for memory and performance. It explains that as concurrency increases, throughput initially increases but contention can then reduce performance. The key resources that can cause contention are CPU, memory, disk I/O, and network I/O. Various tools like JProfiler and JConsole can measure and diagnose contention. Common issues uncovered by profiling include memory leaks, deadlocks, and permgen errors. Profiling is important to optimize applications for production use.
This document discusses LinkedIn's adoption and use of JRuby across three phases or "acts". In Act I, LinkedIn analyzed skill data showing growing Ruby popularity. In Act II, they prototyped using JRuby to address challenges with their Java-based architecture. In Act III, LinkedIn moved their JRuby prototype into production by addressing deployment and performance issues. The summary highlights LinkedIn's data-driven decision to adopt JRuby and the phases of prototyping and moving to production they went through.
DEF CON 27 - DIMITRY SNEZHKOV - zombie ant farm practical tipsFelipe Prado
Linux EDRs present challenges for adversaries seeking to evade detection. The document discusses several strategies and techniques for evading Linux EDRs, including:
1) Utilizing existing trusted system binaries as decoys to bypass process pattern matching. Techniques include using ld.so and busybox to launch payloads.
2) Developing "Uber preloaders" that can load modular payloads and provide command line arguments for evasion.
3) Storing payloads in volatile memory using techniques like memfd_create to avoid detection by EDRs scanning files on disk.
4) Coordinating payloads and preloaders through a "Zombie Ant Farm" module that stores
This document provides an overview of Node.js, including what it is, how it works, and why it is useful. Node.js is a runtime environment that allows JavaScript to be used for high-performance, low-latency applications. It uses an event-driven, non-blocking I/O model that makes it efficient even under heavy loads. Node.js is commonly used for backend development, APIs, microservices, and real-time applications due to its fast performance. It also has a large ecosystem of packages and tools that can be used for building applications and development workflows.
This document discusses how to use Naked Objects, an open source framework, to implement domain-driven design. Naked Objects encapsulates business logic and data access within domain objects and automatically renders user interfaces directly from those objects. This allows for a "DRY" approach where the domain model defines both the application logic and user interface. The document outlines various features of the Naked Objects framework, including different deployment options, persistence mechanisms, and viewer plugins that can be used. It argues that Naked Objects is a useful tool for prototyping domain-driven design applications and getting started with DDD.
Optimizing JavaScript and Dynamic Languages on the JVMMarcus Lagergren
The JavaScript programming language has been experiencing a renaissance of late, driven by the interest in HTML5. Nashorn is a JavaScript engine implemented fully in Java on the JVM. It is based on the Da Vinci Machine (JSR 292) and will be available with JDK 8. This session describes the goals of Project Nashorn, gives a top-level view of how it all works and provides the current status. There are many implementations of JavaScript, meant to run either on the JVM or standalone as native code. Both approaches have their respective pros and cons. The Oracle Nashorn JavaScript project is based on the former approach. This presentation goes through the performance work that has gone on in Oracle’s Nashorn JavaScript project to date in order to make JavaScript-to-bytecode generation for execution on the JVM feasible. It shows that the new invoke dynamic bytecode gets us part of the way there but may not quite be enough. What other tricks did the Nashorn project use? The presentation also discusses future directions for increased performance for dynamic languages on the JVM, covering proposed enhancements to both the JVM itself and to the bytecode compiler.
JavaOne BOF 5957 Lightning Fast Access to Big DataBrian Martin
This document discusses IBM's WebSphere eXtreme Scale product, an in-memory data grid that provides lightning fast access to big data. Some key capabilities of the data grid include horizontal scalability, fault tolerance, data redundancy and replication. The data grid can be used to cache application state, HTTP sessions, and operational data to improve performance and scalability compared to traditional caching approaches. It also allows for distributed computing patterns like map-reduce processing.
Every few months, another Joe (or Jane) Shmoe decides it’s time to write an agenda-driven blog post (or presentation for a conference) that shows why a particular flavor of JPA blows all the other competitors out of the water. This session shows that, when properly used/tuned, the JPA implementations from the major providers (EclipseLink, Hibernate, and OpenJPA) all perform nearly the same.
Efficient Memory and Thread Management in Highly Parallel Java Applicationspkoza
This presentation discusses strategies to estimate and control the memory use of multi-threaded java applications. It includes a quick overview of how the JVM uses memory, followed by techniques to estimate the memory usage of various types of objects during testing. This knowledge is then used as the basis for a runtime scheme to estimate and control the memory use of multiple threads. The final part of the presentation describes how to implement robust handling for unchecked exceptions, especially Out Of Memory (OOM) errors, and how to ensure threads stop properly when unexpected events occur.
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...timfanelli
In this presentation, Tim Fanelli provides an introduction to JSR352 programming, and builds a simple application utilizing the JSR 352 chunk processing model.
The sample program presented may be downloaded here:
https://www.dropbox.com/s/55fsjt4ylny95hc/MySampleBatch.jar
Or, email Tim Fanelli - the contact information is on slide 3!
JavaOne 2013: Garbage Collection Unleashed - Demystifying the WizardryRyan Sciampacone
Garbage Collection Unleashed: Demystifying the Wizardry
JavaOne 2013 CON3948
Ryan A. Sciampacone, Senior Software Developer, IBM JTC
Abstract: Problems with garbage collection? Pauses too long? Maybe too frequent? Other than telling you to give your application more memory, does staring at the logs yield little to no information? Ready to throw your hands up in frustration? Many application developers struggle with understanding where they may have gone wrong from either a deployment or a development perspective when garbage collection becomes a suspect. This presentation aims to demystify some of the mechanics of garbage collection technologies by looking at a series of problems, mapping them back to the implementation in simple terms, and understanding what this means about the collection and your application and how to address the issue.
This document summarizes key aspects of memory management in RubyMotion. It discusses how Ruby uses garbage collection while iOS uses reference counting. Developers need to avoid retain cycles when objects strongly reference each other. Using WeakRef allows child objects to weakly reference parent objects to prevent retain cycles from occurring. The document demonstrates examples of retain cycles and how to avoid them using WeakRef. It also provides information on how to use Xcode Instruments to detect memory leaks and profile memory usage in RubyMotion applications.
The Right Pill for JRuby Memory and Thread Issues: Eclipse Memory AnalyzerVladimir Pavlov
This document discusses memory and thread issues that can occur with JRuby applications and how Eclipse Memory Analyzer can help address them. It provides an overview of Ruby and JRuby, common problems like memory leaks and thread issues, and how the Memory Analyzer tool works. It then describes a JRuby extension plugin for Memory Analyzer that can produce readable Ruby stack traces from heap dumps to help debug issues. Further enhancements are discussed along with a call for feedback.
Persistence is the storage of data that exists beyond a single session or process. There are three main ways to persist data using Hibernate: JDBC, Spring JDBC, and Hibernate itself. Hibernate provides an object-relational mapping tool that allows developers to treat a database as a collection of Java objects and provides transparent data persistence. It abstracts away many of the complexities of directly using JDBC.
Spring-
Spring framework is an open source Java platform that provides comprehensive infrastructure support for developing robust Java applications very easily and very rapidly. Spring framework was initially written by Rod Johnson and was first released under the Apache 2.0 license in June 2003.
Spring provides a very clean division between controllers, JavaBean models, and views.
Spring's MVC is very flexible. Unlike Struts, which forces your Action and Form objects into concrete inheritance (thus taking away your single shot at concrete inheritance in Java), Spring MVC is entirely based on interfaces. Furthermore, just about every part of the Spring MVC framework is configurable via plugging in your own interface. Of course we also provide convenience classes as an implementation option.
Spring, like WebWork, provides interceptors as well as controllers, making it easy to factor out behavior common to the handling of many requests.
Spring MVC is truly view-agnostic. You don't get pushed to use JSP if you don't want to; you can use Velocity, XLST or other view technologies. If you want to use a custom view mechanism – for example, your own templating language – you can easily implement the Spring View interface to integrate it.
Spring Controllers are configured via IoC like any other objects. This makes them easy to test, and beautifully integrated with other objects managed by Spring.
Spring MVC web tiers are typically easier to test than Struts web tiers, due to the avoidance of forced concrete inheritance and explicit dependence of controllers on the dispatcher servlet.
The web tier becomes a thin layer on top of a business object layer. This encourages good practice. Struts and other dedicated web frameworks leave you on your own in implementing your business objects; Spring provides an integrated framework for all tiers of your application.
In this session you will learn:
Understand the advantages of Java
Understand where Java is used
Understand how memory management is handled in Java
Create a Java project in Eclipse and execute it
Implement if..else construct in Java
Develop codes using various data types in Java
Implement various loops
For more information: https://www.mindsmapped.com/courses/software-development/become-a-java-developer-hands-on-training/
This document provides an overview of the Java programming language. It discusses Java's key features such as being robust, multithreaded, architecture-neutral, interpreted, high-performance, distributed, and dynamic. Additional features added in later Java releases include Java Beans, serialization, remote method invocation, database connectivity, and more. Since its inception, Java usage has spread across hardware development, standalone applications, client-server applications, distributed applications, and enterprise applications, establishing Java as a full-fledged technology.
This document discusses auditing reactive applications to detect blocking API calls. It describes how blocking calls can negatively impact performance in reactive systems by consuming thread pools. Various techniques for detecting blocking calls are examined, including modifying the JDK, generating warnings during compilation, and instrumenting code at runtime using a JVM agent. Aspect programming is highlighted as a way to audit applications at load time by weaving in checks for over 500 blocking methods across many Java APIs. The reactive-audit tool is introduced as an open source project for helping developers test for blocking calls in frameworks like Play, Jetty, and Akka.
Application Profiling for Memory and Performancepradeepfn
This document discusses application profiling for memory and performance. It explains that as concurrency increases, throughput initially increases but contention can then reduce performance. The key resources that can cause contention are CPU, memory, disk I/O, and network I/O. Various tools like JProfiler and JConsole can measure and diagnose contention. Common issues uncovered by profiling include memory leaks, deadlocks, and permgen errors. Profiling is important to optimize applications for production use.
This document discusses LinkedIn's adoption and use of JRuby across three phases or "acts". In Act I, LinkedIn analyzed skill data showing growing Ruby popularity. In Act II, they prototyped using JRuby to address challenges with their Java-based architecture. In Act III, LinkedIn moved their JRuby prototype into production by addressing deployment and performance issues. The summary highlights LinkedIn's data-driven decision to adopt JRuby and the phases of prototyping and moving to production they went through.
DEF CON 27 - DIMITRY SNEZHKOV - zombie ant farm practical tipsFelipe Prado
Linux EDRs present challenges for adversaries seeking to evade detection. The document discusses several strategies and techniques for evading Linux EDRs, including:
1) Utilizing existing trusted system binaries as decoys to bypass process pattern matching. Techniques include using ld.so and busybox to launch payloads.
2) Developing "Uber preloaders" that can load modular payloads and provide command line arguments for evasion.
3) Storing payloads in volatile memory using techniques like memfd_create to avoid detection by EDRs scanning files on disk.
4) Coordinating payloads and preloaders through a "Zombie Ant Farm" module that stores
This document provides an overview of Node.js, including what it is, how it works, and why it is useful. Node.js is a runtime environment that allows JavaScript to be used for high-performance, low-latency applications. It uses an event-driven, non-blocking I/O model that makes it efficient even under heavy loads. Node.js is commonly used for backend development, APIs, microservices, and real-time applications due to its fast performance. It also has a large ecosystem of packages and tools that can be used for building applications and development workflows.
This document discusses how to use Naked Objects, an open source framework, to implement domain-driven design. Naked Objects encapsulates business logic and data access within domain objects and automatically renders user interfaces directly from those objects. This allows for a "DRY" approach where the domain model defines both the application logic and user interface. The document outlines various features of the Naked Objects framework, including different deployment options, persistence mechanisms, and viewer plugins that can be used. It argues that Naked Objects is a useful tool for prototyping domain-driven design applications and getting started with DDD.
Optimizing JavaScript and Dynamic Languages on the JVMMarcus Lagergren
The JavaScript programming language has been experiencing a renaissance of late, driven by the interest in HTML5. Nashorn is a JavaScript engine implemented fully in Java on the JVM. It is based on the Da Vinci Machine (JSR 292) and will be available with JDK 8. This session describes the goals of Project Nashorn, gives a top-level view of how it all works and provides the current status. There are many implementations of JavaScript, meant to run either on the JVM or standalone as native code. Both approaches have their respective pros and cons. The Oracle Nashorn JavaScript project is based on the former approach. This presentation goes through the performance work that has gone on in Oracle’s Nashorn JavaScript project to date in order to make JavaScript-to-bytecode generation for execution on the JVM feasible. It shows that the new invoke dynamic bytecode gets us part of the way there but may not quite be enough. What other tricks did the Nashorn project use? The presentation also discusses future directions for increased performance for dynamic languages on the JVM, covering proposed enhancements to both the JVM itself and to the bytecode compiler.
Spring provides several key benefits, including dependency injection which contributes to loose coupling between objects. It also solves common problems when using Java EE modules and allows plugging in frameworks like Hibernate and Struts. Spring makes it easy to manage business objects and integrate with existing projects compared to other frameworks. It promotes good programming practices such as separation of concerns, testability, and inversion of control using a POJO programming model where dependencies are injected at runtime.
This document provides an overview and agenda for the "Busy Java Developer's Guide to WebSphere Debugging & Troubleshooting" presentation. The presentation covers various WebSphere Application Server components, troubleshooting tools like IBM Support Assistant, JVM troubleshooting tools, problem determination tools, common problem scenarios, how customers run into trouble, and includes a demo and Q&A section. It provides an in-depth look at debugging and resolving issues with WebSphere Application Server.
Memory leaks in Java can occur due to objects remaining reachable even when no longer needed. The four main causes are unknown references, long-living objects, failure to clean up native resources, and bugs. To detect leaks, one can use verbose GC logging, monitor the Java process, dump the heap to analyze which objects are retaining others, and use profiling tools. Profiling works by insertion of code, sampling, or instrumenting the virtual machine and helps identify where time is being spent and what objects are being allocated.
AngularJS - Architecture decisionsin a large project Elad Hirsch
This document discusses architecture decisions for a large JavaScript project. It covers the project's technology stack including using Bower for frontend artifacts, ES6 classes for cleaner code, and RequireJS for asynchronous module loading. It also discusses design principles like separation of concerns, testing as a baseline, and enabling easier reusability of components. Specific Angular directives design topics are covered such as making directives singletons, handling state with $scope, and the compile and link functions.
Similar to Resource management in java bof6823 - java one 2012 (20)