Hey guys, lemme tell ya a story.
Once upon a time, we’re talking about the year 2001, a few people had an amazing idea. They were thinking about something that would change the world. It would make the world easy and give programmers almost unlimited power! It was simply referred to as JSR 107, one of the least things to change in the upcoming future. But those pals were way ahead of their time and nothing really happend. So time passed by and by and by and over the years it was buried in the deep catacombs of the JCP. Eventually, in 2011, two brave knights took on the fight and worked themselves through all the pathlessness, to finalize it in 2014. Lads you know what I’m talking about, they called it the “Java Caching API” or in short “JCache”. Yes you heard me, a Java standard for Caching!
JCache - Caching Introduction - What is the idea, where are we coming from and where we want to go in the future. Why we need caching and why do we want to cache?
Hey lads, lemme tell ya a story.
Once upon a time, we're talking about the year 2001, a few people had an amazing idea. They were thinking about something that would change the world. It would make the world easy and give programmers almost unlimited power! It was simply referred to as JSR 107, one of the least things to change in the upcoming future. But those pals were way ahead of their time and nothing really happend. So time passed by and by and by and over the years it was buried in the deep catacombs of the JCP. Eventually, in 2011, two brave knights took on the fight and worked themselves through all the pathlessness, to finalize it in 2014. Lads you know what I'm talking about, they called it the "Java Caching API" or in short "JCache". Yes you heard me, a Java standard for Caching!
A software system cannot possibly imagined without Caching today and it was time for a standard. No matter if you want to cache database queries, generated HTML or results of long running calculations, new systems have to reach a critical mass to be successful. Therefore caching becomes a First-Class-Citizen of application landscape, the principle of Caching First. JCache has grown for 13 years to it's final success and had an amazing Co-Spec-Lead, Greg Luck - the inventor of EHcache.
Today higher heaps and bigger RAM amounts are typical for standard Java server applications. We often then get to the limit of performance, predictability or GC pause times and using Off-Heap technologies we can lower that pains.
The way from monolithic to micro service architectures can hard. Overall micro services are not the all holy grail to just solve all your issues. You need to be aware that you need the right developers and the right toolset. Oh and not to forget, moving state to authorization systems doesn't mean your application is really stateless :)
Anyhow micro services are a great architecture and this deck is a short introduction on why we need to change our application architectures and what pitfalls you you have when introducing the idea of micro services.
Hey guys, lemme tell ya a story.
Once upon a time, we’re talking about the year 2001, a few people had an amazing idea. They were thinking about something that would change the world. It would make the world easy and give programmers almost unlimited power! It was simply referred to as JSR 107, one of the least things to change in the upcoming future. But those pals were way ahead of their time and nothing really happend. So time passed by and by and by and over the years it was buried in the deep catacombs of the JCP. Eventually, in 2011, two brave knights took on the fight and worked themselves through all the pathlessness, to finalize it in 2014. Lads you know what I’m talking about, they called it the “Java Caching API” or in short “JCache”. Yes you heard me, a Java standard for Caching!
JCache - Caching Introduction - What is the idea, where are we coming from and where we want to go in the future. Why we need caching and why do we want to cache?
Hey lads, lemme tell ya a story.
Once upon a time, we're talking about the year 2001, a few people had an amazing idea. They were thinking about something that would change the world. It would make the world easy and give programmers almost unlimited power! It was simply referred to as JSR 107, one of the least things to change in the upcoming future. But those pals were way ahead of their time and nothing really happend. So time passed by and by and by and over the years it was buried in the deep catacombs of the JCP. Eventually, in 2011, two brave knights took on the fight and worked themselves through all the pathlessness, to finalize it in 2014. Lads you know what I'm talking about, they called it the "Java Caching API" or in short "JCache". Yes you heard me, a Java standard for Caching!
A software system cannot possibly imagined without Caching today and it was time for a standard. No matter if you want to cache database queries, generated HTML or results of long running calculations, new systems have to reach a critical mass to be successful. Therefore caching becomes a First-Class-Citizen of application landscape, the principle of Caching First. JCache has grown for 13 years to it's final success and had an amazing Co-Spec-Lead, Greg Luck - the inventor of EHcache.
Today higher heaps and bigger RAM amounts are typical for standard Java server applications. We often then get to the limit of performance, predictability or GC pause times and using Off-Heap technologies we can lower that pains.
The way from monolithic to micro service architectures can hard. Overall micro services are not the all holy grail to just solve all your issues. You need to be aware that you need the right developers and the right toolset. Oh and not to forget, moving state to authorization systems doesn't mean your application is really stateless :)
Anyhow micro services are a great architecture and this deck is a short introduction on why we need to change our application architectures and what pitfalls you you have when introducing the idea of micro services.
Unsafe Java World - Crossing the Borderline - JokerConf 2014 Saint PetersburgChristoph Engelbert
You never heard of sun.misc.Unsafe? You may be using it without realising it. Are you using Spring or Hibernate? 90% of todays applications use sun.misc.Unsafe directly or indirectly. Unsafe is meant to be an API internal to the JVM but since it turned out to be extremely powerful, more and more frameworks have used it.
This talk will show different usecases of sun.misc.Unsafe and other inherently unsafe possibilities in Java. Some are commonly used in production environments like fast Serialization, Offheap or to build lock-free algorithms, some not suitable for production but fun to play with breaking the rules of what you can do in Java.
After the talk you’ll understand what is possible and what might help you, but not to forget, this talk is given with a big warning: Don’t Try That At Home!
Today’s amounts of collected data are showing nearly exponential growth. More than 75 percent of all collected data has been collected in the past five years. To store that data and process it within an appropriate time, you need to partition the data and parallelize the processing of reports and analytics. This session demonstrates how to quickly and easily parallelize data processing with Hazelcast and its underlying distributed data structures. By giving a few quick introductions to different terms and some short live coding sessions, the presentation takes you on a journey through distributed computing.
JVM Mechanics: When Does the JVM JIT & Deoptimize?Doug Hawkins
HotSpot promises to do the "right" thing for us by identifying our hot code and compiling "just-in-time", but how does HotSpot make those decisions?
This presentation aims to detail how HotSpot makes those decisions and how it corrects its mistakes through a series of demos that you run yourself.
The future of Java is insight with Java 9 around the corner. Last year's discussions around the removal from sun.misc.Unsafe and the eventually presented compromise is history. Time to start looking forward to some details from what's coming, especially in terms of the Unsafe API replacement.
In-Memory Computing - Distributed Systems - Devoxx UK 2015Christoph Engelbert
Today’s amounts of collected data are showing a nearly exponential growth. More than 75% of all the data have been collected in the past 5 years. To store this data and process it in an appropriate time you need to partition the data and parallelize the processing of reports and analytics. This talk will demonstrate how to parallelize data processing using Hazelcast and it’s underlying distributed data structures. With a quick introduction into the different terms and some short live coding examples we will make the journey into the distributed computing.
Hazelcast is an easy to use but scalable in-memory datagrid and distributed executor framework. It enables you to build applications having a big requirement on memory or that needs to scale horizontally.
JVM Mechanics: Understanding the JIT's TricksDoug Hawkins
In this talk, we'll walkthrough how the JIT optimizes a piece Java code step-by-step. In doing so, you'll learn some of the amazing feats of optimization that JVMs can perform, but also some surprisingly simple things that prevent your code from running fast.
Java's warm-up challenges are starting to receive more attention lately. For the past 4 years, Azul has been shipping ReadyNow -- a solution to Java's warm-up problems as part of their Zing Virtual Machine.
However in building ReadyNow, Azul chose at unconventional but effective approach to solving these warm-up problems.
This talk is a look into some of the surprising performance cases in Java -- with the goal of illustrating a few simple truths about the nature of compilers.
An overview of the inner-workings of OpenJDK - with emphasis on...
- what triggers the just-in-time compiler (JIT)
- types of speculative optimizations performed by the JIT
- aspects of the Java language & ecosystem that make ahead-of-time (AOT) compilation challenging
Inside Android's Dalvik VM - NEJUG Nov 2011Doug Hawkins
In this presentation, Doug Hawkins will discuss how the Dalvik VM is different from traditional Java VMs and the motivations behind those differences. Along the way, you'll learn about Android's service architecture, Dalvik's byte code format, and the surprising details of how Android installs, launches, and executes applications.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Unsafe Java World - Crossing the Borderline - JokerConf 2014 Saint PetersburgChristoph Engelbert
You never heard of sun.misc.Unsafe? You may be using it without realising it. Are you using Spring or Hibernate? 90% of todays applications use sun.misc.Unsafe directly or indirectly. Unsafe is meant to be an API internal to the JVM but since it turned out to be extremely powerful, more and more frameworks have used it.
This talk will show different usecases of sun.misc.Unsafe and other inherently unsafe possibilities in Java. Some are commonly used in production environments like fast Serialization, Offheap or to build lock-free algorithms, some not suitable for production but fun to play with breaking the rules of what you can do in Java.
After the talk you’ll understand what is possible and what might help you, but not to forget, this talk is given with a big warning: Don’t Try That At Home!
Today’s amounts of collected data are showing nearly exponential growth. More than 75 percent of all collected data has been collected in the past five years. To store that data and process it within an appropriate time, you need to partition the data and parallelize the processing of reports and analytics. This session demonstrates how to quickly and easily parallelize data processing with Hazelcast and its underlying distributed data structures. By giving a few quick introductions to different terms and some short live coding sessions, the presentation takes you on a journey through distributed computing.
JVM Mechanics: When Does the JVM JIT & Deoptimize?Doug Hawkins
HotSpot promises to do the "right" thing for us by identifying our hot code and compiling "just-in-time", but how does HotSpot make those decisions?
This presentation aims to detail how HotSpot makes those decisions and how it corrects its mistakes through a series of demos that you run yourself.
The future of Java is insight with Java 9 around the corner. Last year's discussions around the removal from sun.misc.Unsafe and the eventually presented compromise is history. Time to start looking forward to some details from what's coming, especially in terms of the Unsafe API replacement.
In-Memory Computing - Distributed Systems - Devoxx UK 2015Christoph Engelbert
Today’s amounts of collected data are showing a nearly exponential growth. More than 75% of all the data have been collected in the past 5 years. To store this data and process it in an appropriate time you need to partition the data and parallelize the processing of reports and analytics. This talk will demonstrate how to parallelize data processing using Hazelcast and it’s underlying distributed data structures. With a quick introduction into the different terms and some short live coding examples we will make the journey into the distributed computing.
Hazelcast is an easy to use but scalable in-memory datagrid and distributed executor framework. It enables you to build applications having a big requirement on memory or that needs to scale horizontally.
JVM Mechanics: Understanding the JIT's TricksDoug Hawkins
In this talk, we'll walkthrough how the JIT optimizes a piece Java code step-by-step. In doing so, you'll learn some of the amazing feats of optimization that JVMs can perform, but also some surprisingly simple things that prevent your code from running fast.
Java's warm-up challenges are starting to receive more attention lately. For the past 4 years, Azul has been shipping ReadyNow -- a solution to Java's warm-up problems as part of their Zing Virtual Machine.
However in building ReadyNow, Azul chose at unconventional but effective approach to solving these warm-up problems.
This talk is a look into some of the surprising performance cases in Java -- with the goal of illustrating a few simple truths about the nature of compilers.
An overview of the inner-workings of OpenJDK - with emphasis on...
- what triggers the just-in-time compiler (JIT)
- types of speculative optimizations performed by the JIT
- aspects of the Java language & ecosystem that make ahead-of-time (AOT) compilation challenging
Inside Android's Dalvik VM - NEJUG Nov 2011Doug Hawkins
In this presentation, Doug Hawkins will discuss how the Dalvik VM is different from traditional Java VMs and the motivations behind those differences. Along the way, you'll learn about Android's service architecture, Dalvik's byte code format, and the surprising details of how Android installs, launches, and executes applications.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Enhancing Performance with Globus and the Science DMZGlobus
ESnet has led the way in helping national facilities—and many other institutions in the research community—configure Science DMZs and troubleshoot network issues to maximize data transfer performance. In this talk we will present a summary of approaches and tips for getting the most out of your network infrastructure using Globus Connect Server.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
1. JVM Internals
Douglas Q. Hawkins - dougqh@gmail.com
http://www.dougqh.net/
Wednesday, November 10, 2010
2. JVM Internals
Douglas Q. Hawkins - dougqh@gmail.com
http://www.dougqh.net/
http://www.meetup.com/boston-java
Wednesday, November 10, 2010
3. JVM Internals
HotSpot Garbage Collector
HotSpot Optimizations
Class File Format & Byte Code
Compile Time
Run Time
Demos
Presentation Materials
http://www.slideshare.net/dougqh
https://github.com/dougqh
Wednesday, November 10, 2010
5. Garbage Collection
Current HotSpot Collectors
Demos
Garbage First (G1) Collector
Wednesday, November 10, 2010
6. Generational Hypothesis
Generational Hypothesis
92 to 98% objects die young
Few references exist from old objects to new objects
http://www.devx.com/Java/Article/21977
http://www.ibm.com/developerworks/java/library/j-jtp09275.html
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
8. HotSpot Garbage Collector
Young Generation
Old Generation
http://download.oracle.com/javase/1.5.0/docs/guide/vm/gc-ergonomics.html
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
9. HotSpot Garbage Collector
Young Generation
Eden
S1 S2
Old Generation
http://download.oracle.com/javase/1.5.0/docs/guide/vm/gc-ergonomics.html
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
10. Object Allocation
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
11. Object Allocation
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
12. Object Allocation
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
13. Object Allocation
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
14. Object Allocation
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
15. Object Allocation
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
16. Object Allocation
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
17. Object Allocation
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
18. Object Allocation
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
19. Object Allocation
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
20. Object Allocation
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
21. Object Allocation
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
22. Object Allocation
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
23. Object Allocation
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
24. Object Allocation
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
25. Object Allocation
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
26. Object Allocation
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://blogs.sun.com/jonthecollector/entry/the_real_thing
http://blogs.sun.com/jonthecollector/entry/a_little_thread_privacy_please
Wednesday, November 10, 2010
27. Minor Collection
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
28. Minor Collection
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
29. Minor Collection
TLAB
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
30. Minor Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
31. Minor Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
32. Minor Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
33. Minor Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
34. Minor Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
35. Minor Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
36. Minor Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
37. Minor Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.fasterj.com/articles/G1.shtml
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
Wednesday, November 10, 2010
38. Application Thread GC Thread
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
Wednesday, November 10, 2010
39. Stop the World!
Application Thread GC Thread
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
Wednesday, November 10, 2010
40. Application Thread GC Thread
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
Wednesday, November 10, 2010
41. Serial
Application Thread GC Thread
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
Wednesday, November 10, 2010
42. Serial Parallel
Application Thread GC Thread
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
Wednesday, November 10, 2010
44. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
45. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
46. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
47. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
48. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
49. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
50. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
51. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
52. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
53. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
54. Major Collection
Young Generation
Eden
S1 S2
Old Generation
http://www.devx.com/Java/Article/21977/0
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
Wednesday, November 10, 2010
55. Serial Mark Parallel Mark
Sweep & Compact Sweep & Compact
Application Thread GC Thread
http://www.devx.com/Java/Article/21977/0/page/3
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
Wednesday, November 10, 2010
56. Serial Mark Parallel Mark
Sweep & Compact Sweep & Compact
Application Thread GC Thread
http://www.devx.com/Java/Article/21977/0/page/3
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
Wednesday, November 10, 2010
57. Serial Mark Parallel Mark
Sweep & Compact Sweep & Compact
Concurrent Mark & Sweep
Application Thread GC Thread
http://www.devx.com/Java/Article/21977/0/page/3
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
Wednesday, November 10, 2010
58. Serial Mark Parallel Mark
Sweep & Compact Sweep & Compact
Concurrent Mark & Sweep
Concurrent
Marking
Remark
Concurrent
Sweep
Application Thread GC Thread
http://www.devx.com/Java/Article/21977/0/page/3
http://www.austinjug.org/presentations/JDK6PerfUpdate_Dec2009.pdf
Wednesday, November 10, 2010
60. Permanent Generation
Young Generation
Eden
S1 S2
Old Generation
http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=2669
http://dow.ngra.de/2009/06/15/classloaderlocal-how-to-avoid-classloader-leaks-on-application-redeploy/
Wednesday, November 10, 2010
61. Permanent Generation
Young Generation
Eden
S1 S2
Old Generation
Permanent Generation
http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=2669
http://dow.ngra.de/2009/06/15/classloaderlocal-how-to-avoid-classloader-leaks-on-application-redeploy/
Wednesday, November 10, 2010
62. Permanent Generation
Young Generation
Eden
S1 S2
Old Generation
Permanent Generation
Bootstrap App Server Web Application
http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=2669
http://dow.ngra.de/2009/06/15/classloaderlocal-how-to-avoid-classloader-leaks-on-application-redeploy/
Wednesday, November 10, 2010
63. Permanent Generation
Young Generation
Eden
S1 S2
Old Generation
Permanent Generation
Bootstrap App Server Web Application
http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=2669
http://dow.ngra.de/2009/06/15/classloaderlocal-how-to-avoid-classloader-leaks-on-application-redeploy/
Wednesday, November 10, 2010
64. Permanent Generation
Young Generation
Eden
S1 S2
Old Generation
Permanent Generation
Bootstrap App Server Web Application
http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=2669
http://dow.ngra.de/2009/06/15/classloaderlocal-how-to-avoid-classloader-leaks-on-application-redeploy/
Wednesday, November 10, 2010
65. Permanent Generation
Young Generation
Eden
S1 S2
Old Generation
Permanent Generation
Bootstrap App Server Web Application
http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=2669
http://dow.ngra.de/2009/06/15/classloaderlocal-how-to-avoid-classloader-leaks-on-application-redeploy/
Wednesday, November 10, 2010
66. Permanent Generation
Young Generation
Eden
S1 S2
Old Generation
Permanent Generation
Bootstrap App Server
http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=2669
http://dow.ngra.de/2009/06/15/classloaderlocal-how-to-avoid-classloader-leaks-on-application-redeploy/
Wednesday, November 10, 2010
68. Java 6 Collectors
Parallel Parallel
Young Serial
New Scavenge
Serial Old Concurrent
Parallel
Old (Mark Sweep Mark &
Old
Compact) Sweep
http://www.petefreitag.com/articles/gctuning/
http://blogs.sun.com/jonthecollector/entry/our_collectors
http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html
Wednesday, November 10, 2010
69. Java 6 Collectors
-XX:+UseSerialGC
Parallel Parallel
Young Serial
New Scavenge
Serial Old Concurrent
Parallel
Old (Mark Sweep Mark &
Old
Compact) Sweep
http://www.petefreitag.com/articles/gctuning/
http://blogs.sun.com/jonthecollector/entry/our_collectors
http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html
Wednesday, November 10, 2010
70. Java 6 Collectors
-XX:+UseParNewGC
Parallel Parallel
Young Serial
New Scavenge
Serial Old Concurrent
Parallel
Old (Mark Sweep Mark &
Old
Compact) Sweep
http://www.petefreitag.com/articles/gctuning/
http://blogs.sun.com/jonthecollector/entry/our_collectors
http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html
Wednesday, November 10, 2010
71. Java 6 Collectors
-XX:+UseParallelGC
Parallel Parallel
Young Serial
New Scavenge
Serial Old Concurrent
Parallel
Old (Mark Sweep Mark &
Old
Compact) Sweep
http://www.petefreitag.com/articles/gctuning/
http://blogs.sun.com/jonthecollector/entry/our_collectors
http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html
Wednesday, November 10, 2010
72. Java 6 Collectors
-XX:+UseConcMarkSweepGC
Parallel Parallel
Young Serial
New Scavenge
Serial Old Concurrent
Parallel
Old (Mark Sweep Mark &
Old
Compact) Sweep
http://www.petefreitag.com/articles/gctuning/
http://blogs.sun.com/jonthecollector/entry/our_collectors
http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html
Wednesday, November 10, 2010
73. Java 6 Collectors
-XX:+UseParallelOldGC
Parallel Parallel
Young Serial
New Scavenge
Serial Old Concurrent
Parallel
Old (Mark Sweep Mark &
Old
Compact) Sweep
http://www.petefreitag.com/articles/gctuning/
http://blogs.sun.com/jonthecollector/entry/our_collectors
http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html
Wednesday, November 10, 2010
74. Java 6 Collectors
Parallel Parallel
Young Serial
New Scavenge
Serial Old Concurrent
Parallel
Old (Mark Sweep Mark &
Old
Compact) Sweep
http://www.petefreitag.com/articles/gctuning/
http://blogs.sun.com/jonthecollector/entry/our_collectors
http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html
Wednesday, November 10, 2010
75. Java 6 Collectors
Parallel Parallel
Young Serial
New Scavenge
G1
Serial Old Concurrent
Parallel
Old (Mark Sweep Mark &
Old
Compact) Sweep
http://www.petefreitag.com/articles/gctuning/
http://blogs.sun.com/jonthecollector/entry/our_collectors
http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html
Wednesday, November 10, 2010
76. G1 - Garbage First
Heap
http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
Wednesday, November 10, 2010
77. G1 - Garbage First
http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
Wednesday, November 10, 2010
78. G1 - Garbage First
Unused
http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
Wednesday, November 10, 2010
79. G1 - Garbage First
Unused Young
http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
Wednesday, November 10, 2010
80. G1 - Garbage First
Unused Young Old
http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
Wednesday, November 10, 2010
81. G1 - Minor Collection
Unused Young Old
Wednesday, November 10, 2010
82. G1 - Minor Collection
Unused Young Old
Wednesday, November 10, 2010
83. G1 - Minor Collection
Unused Young Old
Wednesday, November 10, 2010
84. G1 - Minor Collection
Unused Young Old
Wednesday, November 10, 2010
85. G1 - Minor Collection
Unused Young Old
Wednesday, November 10, 2010
86. G1 - Minor Collection
Unused Young Old
Wednesday, November 10, 2010
87. G1 - Minor Collection
Unused Young Old
Wednesday, November 10, 2010
88. G1 - Minor Collection
Unused Young Old
Wednesday, November 10, 2010
89. G1 - Minor Collection
Unused Young Old
Wednesday, November 10, 2010
90. G1 - Major Collection
Unused Young Old
Wednesday, November 10, 2010
91. G1 - Major Collection
Unused Young Old
Wednesday, November 10, 2010
92. G1 - Major Collection
Unused Young Old
Wednesday, November 10, 2010
93. G1 - Major Collection
Unused Young Old
Wednesday, November 10, 2010
94. G1 - Major Collection
Unused Young Old
Wednesday, November 10, 2010
95. G1 - Major Collection
Unused Young Old
Wednesday, November 10, 2010
96. G1 - Major Collection
Unused Young Old
Wednesday, November 10, 2010
97. G1 - Major Collection
Unused Young Old
Wednesday, November 10, 2010
98. G1 - Major Collection
Unused Young Old
Wednesday, November 10, 2010
103. Class File Format & Byte Code
Class File Layout & Parts
Introduction to Byte Code
Examples of Java Compiled to Byte Code
Wednesday, November 10, 2010
104. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
105. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
106. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
107. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
108. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
n
Flags This Class Super Class
pu te d
tio
ce
iva te
er ct
ta
ab tfp
pr ec
int ra
fa
ic
um
pr ic
no
Interfaces
st
bl
ric
ot
al
at
en
an
fin
st
st
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
109. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
110. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
111. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
112. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
113. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
114. Class File Format
CA FE BA BE Minor Version Major Version
Constant Pool
Flags This Class Super Class
Interfaces
Fields
Methods
Attributes
http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
Wednesday, November 10, 2010
115. Field Format
Flags Name Descriptor
Attributes
Wednesday, November 10, 2010
116. Field Format
Flags Name Descriptor
pu te d
lat nt
iva te
ile
vo ie
pr ec
ic
pr ic
ns
Attributes
bl
ot
al
at
tra
fin
Wednesday, November 10, 2010 st
117. Field Format
Flags Name Descriptor
“name”
Attributes
Wednesday, November 10, 2010
118. Field Format
Flags Name Descriptor “Ljava/lang/String;”
Attributes
Wednesday, November 10, 2010
119. Field Format
Flags Name Descriptor
Attributes
Wednesday, November 10, 2010
120. Field Format
Flags Name Descriptor
Attributes
ConstantValue
Wednesday, November 10, 2010
121. Method Format
Flags Name Descriptor
Attributes
Wednesday, November 10, 2010
122. Wednesday, November 10, 2010
Name Flags
st
Method Format
ric
tfp
Attributes
na
tiv
va e
ra
rg
s
Descriptor
sy
nc
fin hr
al on
st ize
at d
pr ic
ot
pr ec
iva te
pu te d
bl
ic
123. Method Format
Flags Name Descriptor
“main”
Attributes
Wednesday, November 10, 2010
124. Method Format
Flags Name Descriptor “([Ljava/lang/String;)V”
Attributes
Wednesday, November 10, 2010
125. Method Format
Flags Name Descriptor
Attributes
Wednesday, November 10, 2010
126. Method Format
Flags Name Descriptor
Attributes
Exceptions
Wednesday, November 10, 2010
127. Method Format
Flags Name Descriptor
Attributes
Exceptions
Code
Wednesday, November 10, 2010
128. Browsing Class File Format
JClassLib Viewer http://www.ej-technologies.com/products/jclasslib/overview.html
JAD http://www.varaneckas.com/jad
Wednesday, November 10, 2010
138. Operation Types
Load and Store
Arithmetic and Logic
Type Conversion
Control Transfer
Object Creation and Manipulation
Operand Stack
Method Invocation
Wednesday, November 10, 2010
139. Data Types
x
refi
als
ns de P
ray Loc
ac ts
By ture
St tan
Co
k/
na
te
Sig
Co
Ar
boolean Z
Integer Types
byte B b
char C c
short S s
int I i
long J l
float F f
double D d
reference L a
void V
Wednesday, November 10, 2010
140. Parameters and Local Variables
static int volume(
int width,
int depth,
int height )
{
int area = width * depth;
int volume = area * height;
return volume;
}
Wednesday, November 10, 2010
141. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
{ 3 istore_3
int area = width * depth;
4 iload_3
int volume = area * height;
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn
Wednesday, November 10, 2010
142. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
4 iload_3
int volume = area * height;
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn
Wednesday, November 10, 2010
143. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn
Wednesday, November 10, 2010
144. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn 1
Wednesday, November 10, 2010
145. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4 2
11ireturn 1
Wednesday, November 10, 2010
146. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn 2
Wednesday, November 10, 2010
147. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3 2
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn
Wednesday, November 10, 2010
148. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3 2
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn 2
Wednesday, November 10, 2010
149. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3 2
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4 3
11ireturn 2
Wednesday, November 10, 2010
150. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3 2
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn 6
Wednesday, November 10, 2010
151. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3 2 6
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn
Wednesday, November 10, 2010
152. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3 2 6
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn 6
Wednesday, November 10, 2010
153. Parameters and Local Variables
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
int height ) 2 imul
e
t
h
lum
igh
h
pt
a
dt
{
are
3 istore_3
de
he
wi
vo
0 1 2 3 4
int area = width * depth;
int volume = area * height;
4 iload_3 1 2 3 2 6
return volume; 5 iload_2
}
6 imul
7 istore 4
9 iload 4
11ireturn
Wednesday, November 10, 2010
154. Static vs Virtual Methods
static int volume( 0 iload_0
int width, 1 iload_1
int depth,
2 imul
e
int height )
are t
h
lum
h
igh
pt
a
dt
{ 3 istore_3
de
he
wi
vo
0 1 2 3 4 5
int area = width * depth;
4 iload_3
int volume = area * height;
return volume; 5 iload_2
} 6 imul
7 istore 4
9 iload 4
11 ireturn
Wednesday, November 10, 2010
155. Static vs Virtual Methods
int volume( 0 iload_0
int width, 1 iload_1
int depth,
2 imul
e
int height )
are t
h
lum
h
igh
pt
a
dt
{ 3 istore_3
de
he
wi
vo
0 1 2 3 4 5
int area = width * depth;
4 iload_3
int volume = area * height;
return volume; 5 iload_2
} 6 imul
7 istore 4
9 iload 4
11 ireturn
Wednesday, November 10, 2010
156. Static vs Virtual Methods
int volume( 0 iload_0
int width, 1 iload_1
int depth,
2 imul
e
int height )
are t
he h
lum
h
igh
pt
a
dt
s
{ 3 istore_3
de
thi
wi
vo
0 1 2 3 4 5
int area = width * depth;
4 iload_3
int volume = area * height;
return volume; 5 iload_2
} 6 imul
7 istore 4
9 iload 4
11 ireturn
Wednesday, November 10, 2010
157. Static vs Virtual Methods
int volume( 0 iload_1
int width, 1 iload_2
int depth,
2 imul
e
int height )
are t
he h
lum
h
igh
pt
a
dt
s
{ 3 istore 4
de
thi
wi
vo
0 1 2 3 4 5
int area = width * depth;
5 iload 4
int volume = area * height;
return volume; 7 iload_3
} 8 imul
9 istore 5
11 iload 5
13 ireturn
Wednesday, November 10, 2010
158. Hello World
System.out.println( “Hello World” );
Wednesday, November 10, 2010
173. If / Else
static boolean isPositive( int val ){
if ( val > 0 ) {
return true;
} else {
return false;
}
}
Wednesday, November 10, 2010
174. If / Else
static boolean isPositive( int val ){ 0 iload_0
test
if ( val > 0 ) { 1 ifle +5 //6
return true;
4 iconst_1
} else {
if
return false; 5 ireturn
} 6 iconst_0
else
} 7 ireturn
Wednesday, November 10, 2010
175. If / Else
static boolean isPositive( int val ){ 0 iload_0
test
if ( val > 0 ) { 1 ifle +5 //6
return true;
4 iconst_1
} else {
if
return false; 5 ireturn
} 6 iconst_0
else
} 7 ireturn
Wednesday, November 10, 2010
176. If / Else
static boolean isPositive( int val ){ 0 iload_0
test
if ( val > 0 ) { 1 ifle +5 //6
return true;
4 iconst_1
} else {
if
return false; 5 ireturn
} 6 iconst_0
else
} 7 ireturn
Wednesday, November 10, 2010
177. If / Else
static boolean isPositive( int val ){ 0 iload_0
test
if ( val > 0 ) { 1 ifle +5 //6
return true;
4 iconst_1
} else {
if
return false; 5 ireturn
} 6 iconst_0
else
} 7 ireturn
Wednesday, November 10, 2010
178. If / Else
static boolean isPositive( int val ){ 0 iload_0
test
if ( val > 0 ) { 1 ifle +5 //6
return true;
4 iconst_1
} else {
if
return false; 5 ireturn
} 6 iconst_0
else
} 7 ireturn
static boolean isPositive( int val ){
return ( val > 0 );
}
Wednesday, November 10, 2010
179. If / Else
static boolean isPositive( int val ){
if ( val > 0 ) {
return true;
} else {
return false;
}
}
static boolean isPositive( int val ){
return ( val > 0 );
}
Wednesday, November 10, 2010
180. If / Else
static boolean isPositive( int val ){ 0 iload_0
test
if ( val > 0 ) { 1 ifle +5 //6
return true;
4 iconst_1
} else {
if
return false; 5 ireturn
} 6 iconst_0
else
} 7 ireturn
static boolean isPositive( int val ){
return ( val > 0 );
}
Wednesday, November 10, 2010
181. For Loop
static int sum( int min, int max ){
int sum = 0;
for ( int i=min; i<max; ++i ){
sum += i;
}
return sum;
}
Wednesday, November 10, 2010
182. before
0 iconst_0
For Loop
init & test loop
1 istore_2
2 iload_1
static int sum( int min, int max ){ 3 istore_3
int sum = 0; 4 goto +10 //14
for ( int i=min; i<max; ++i ){ 7 iload_2
loop body
sum += i; 8 iload_3
} 9 iadd
return sum;
10 istore_2
}
inc
11 iinc 3 by 1
14 iload_3
test 15 iload_1
16 if_icmplt -9 //7
19 iload_2
after
loop
20 ireturn
Wednesday, November 10, 2010
183. before
0 iconst_0
For Loop
init & test loop
1 istore_2
2 iload_1
static int sum( int min, int max ){ 3 istore_3
int sum = 0; 4 goto +10 //14
for ( int i=min; i<max; ++i ){ 7 iload_2
loop body
sum += i; 8 iload_3
} 9 iadd
return sum;
10 istore_2
}
inc
11 iinc 3 by 1
14 iload_3
test 15 iload_1
16 if_icmplt -9 //7
19 iload_2
after
loop
20 ireturn
Wednesday, November 10, 2010
184. before
0 iconst_0
For Loop
init & test loop
1 istore_2
2 iload_1
static int sum( int min, int max ){ 3 istore_3
int sum = 0; 4 goto +10 //14
for ( int i=min; i<max; ++i ){ 7 iload_2
loop body
sum += i; 8 iload_3
} 9 iadd
return sum;
10 istore_2
}
inc
11 iinc 3 by 1
14 iload_3
test 15 iload_1
16 if_icmplt -9 //7
19 iload_2
after
loop
20 ireturn
Wednesday, November 10, 2010
185. before
0 iconst_0
For Loop
init & test loop
1 istore_2
2 iload_1
static int sum( int min, int max ){ 3 istore_3
int sum = 0; 4 goto +10 //14
for ( int i=min; i<max; ++i ){ 7 iload_2
loop body
sum += i; 8 iload_3
} 9 iadd
return sum;
10 istore_2
}
inc
11 iinc 3 by 1
14 iload_3
test 15 iload_1
16 if_icmplt -9 //7
19 iload_2
after
loop
20 ireturn
Wednesday, November 10, 2010
186. before
0 iconst_0
For Loop
init & test loop
1 istore_2
2 iload_1
static int sum( int min, int max ){ 3 istore_3
int sum = 0; 4 goto +10 //14
for ( int i=min; i<max; ++i ){ 7 iload_2
loop body
sum += i; 8 iload_3
} 9 iadd
return sum;
10 istore_2
}
inc
11 iinc 3 by 1
14 iload_3
test 15 iload_1
16 if_icmplt -9 //7
19 iload_2
after
loop
20 ireturn
Wednesday, November 10, 2010
187. before
0 iconst_0
For Loop
init & test loop
1 istore_2
2 iload_1
static int sum( int min, int max ){ 3 istore_3
int sum = 0; 4 goto +10 //14
for ( int i=min; i<max; ++i ){ 7 iload_2
loop body
sum += i; 8 iload_3
} 9 iadd
return sum;
10 istore_2
}
inc
11 iinc 3 by 1
14 iload_3
test 15 iload_1
16 if_icmplt -9 //7
19 iload_2
after
loop
20 ireturn
Wednesday, November 10, 2010
188. before
0 iconst_0
For Loop
init & test loop
1 istore_2
2 iload_1
static int sum( int min, int max ){ 3 istore_3
int sum = 0; 4 goto +10 //14
for ( int i=min; i<max; ++i ){ 7 iload_2
loop body
sum += i; 8 iload_3
} 9 iadd
return sum;
10 istore_2
}
inc
11 iinc 3 by 1
14 iload_3
test 15 iload_1
16 if_icmplt -9 //7
19 iload_2
after
loop
20 ireturn
Wednesday, November 10, 2010
189. Exception Handling
static int read( InputStream in ) {
try {
return in.read();
} catch ( IOException e ) {
return -1;
} finally {
IoUtils.closeQuietly( in );
}
}
Wednesday, November 10, 2010