SlideShare a Scribd company logo
Dr. Low Latency or: How I Learned to Stop
Worrying about Pauses and Love the
Memory Heap

@author Jaromir Hamala, jhamala@c2b2.co.uk
@author(type=Twitter) @jerrinot

© C2B2 Consulting Limited 2013
All Rights Reserved
Who Am I?
■ Jaromir Hamala
■ A curious developer
■ Who likes to break play with stuff

© C2B2 Consulting Limited 2013
All Rights Reserved
Safe Harbor
This talk may contain non-sense!

© C2B2 Consulting Limited 2013
All Rights Reserved
Facts
• Memory is Cheap
• We have a lot of data
• Data in Memory == Fastest Possible Data (apart from CPU
caches)

http://www.npr.org/blogs/thetwo-way/2012/06/06/154416480/ho-hum-dull-and-boring-are-now-a-pair

© C2B2 Consulting Limited 2013
All Rights Reserved
On-Heap Allocation
• CoolObject cool = new CoolObject()
• Great:
– It’s easy and usually *very* fast!
• Allocation can be actually faster than in C

– GC goodies!

• Not so great:
– GC leads to Stop-the-World Pauses
– Bigger Heap -> Longer Pauses
© C2B2 Consulting Limited 2013
All Rights Reserved
© C2B2 Consulting Limited 2013
All Rights Reserved
© C2B2 Consulting Limited 2013
All Rights Reserved
Why to go Off-Heap?
• Latency caused by GC
• Locality
• Sharing with non-Java

http://digboston.com/boston-lulz/2013/08/trolley-trollop-first-comes-love/attachment/why-god-why-kitten1/

© C2B2 Consulting Limited 2013
All Rights Reserved
GC Implementations
•

(Old Gen)

GC in HotSpot (Oracle/Sun JDK, OpenJDK)

– ParOld – STW pauses by design!
– CMS – fragmentation -> STW pause
– G1 – Immature (yet?), not fulfilling the expectations ->
occasional STW pauses

© C2B2 Consulting Limited 2013
All Rights Reserved
Latency can kill you!

© C2B2 Consulting Limited 2013
All Rights Reserved
What is Off-Heap?
• Area of memory not maintained by GC
– Manual memory control

• No Notion of Java object
– serialization

http://nickshell1983.wordpress.com/2010/06/29/taking-a-god-nudged-leap-of-faith/

© C2B2 Consulting Limited 2013
All Rights Reserved
Off-Heap Options?
•
•
•
•
•

Direct Memory Buffer
sun.misc.Unsafe
JNI
Memory Mapped File
….

http://en.wikipedia.org/wiki/File:Road_to_Hell_One_Sheet.jpg

© C2B2 Consulting Limited 2013
All Rights Reserved
Direct Memory Buffer
• ByteBuffer directBuf =
ByteBuffer.allocateDirect(int noBytes);

•
•
•
•

Part of Java NIO
Max. 2GB / buffer
Pure Java = Portable
getX()/putX() methods

© C2B2 Consulting Limited 2013
All Rights Reserved
sun.misc.Unsafe
– long addr = unsafe.allocateMemory(noBytes)

– Not a standardized part of JDK!
– Implemented by most JVM vendors
• Sun / Oracle / IBM

– It can disappear from JDK without warning!

© C2B2 Consulting Limited 2013
All Rights Reserved
Cassandra I.
public class NativeAllocator implements IAllocator
{
static final Unsafe unsafe;
static {
try {
Field field = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
unsafe = (sun.misc.Unsafe) field.get(null);
}
catch (Exception e) {
throw new AssertionError(e);
}
}
public long allocate(long size) {
return unsafe.allocateMemory(size);
}
public void free(long peer) {
unsafe.freeMemory(peer);
}
}

© C2B2 Consulting Limited 2013
All Rights Reserved
JNI
• Java Native Interface
• Native library means worst portability
between platforms
• JNI Overhead
• Can re-use already existing (native) allocator

© C2B2 Consulting Limited 2013
All Rights Reserved
Cassandra II.
• Java Native Interface via JNA
public class JEMallocAllocator implements IAllocator {
public interface JEMLibrary extends Library {
long malloc(long size);
void free(long pointer);
}
private final JEMLibrary library;
public JEMallocAllocator() {
library = (JEMLibrary) Native.loadLibrary("jemalloc", JEMLibrary.class);
}
public long allocate(long size) {
return library.malloc(size);
}
public void free(long peer) {
library.free(peer);
}
}
© C2B2 Consulting Limited 2013
All Rights Reserved
Memory Mapped File
•
•
•
•

Part of NIO
Pure Java -> Portable
Allows sharing data between processes
Persisted by OS

© C2B2 Consulting Limited 2013
All Rights Reserved
Javin Paul,
http://javarevisited.blogspot.com/2012/01/memorymapped-file-and-io-in-java.html
private static int count = 1010241024; //10 MB

public static void main(String[] args) throws Exception {
RandomAccessFile memoryMappedFile = new RandomAccessFile("largeFile.txt", "rw");
//Mapping a file into memory
MappedByteBuffer out = memoryMappedFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0,
count);
//Writing into Memory Mapped File
for (int i = 0; i < count; i++) {
out.put((byte) 'A');
}
System.out.println("Writing to Memory Mapped File is completed");

//reading from memory file in Java
for (int i = 0; i < 10 ; i++) {
System.out.print((char) out.get(i));
}
System.out.println("Reading from Memory Mapped File is completed");
}

© C2B2 Consulting Limited 2013
All Rights Reserved
Use cases for Off-Heap?
• Caches / Data Grids
– A lot of data
– Objects with well defined lifecycle

• (Extremely) Latency-Sensitive tasks
– High-Frequency trading…

• Sharing Data with non-Java
© C2B2 Consulting Limited 2013
All Rights Reserved
Apache DirectMemory
• “…is a off-heap cache for the Java Virtual
Machine”
• Easy to integrate
• Friendly License
• Experimental
• http://directmemory.apache.org/

© C2B2 Consulting Limited 2013
All Rights Reserved
DirectMemory Usage
CacheService<Object, Object> cacheService =
new DirectMemory<Object, Object>()
.setNumberOfBuffers( 10 )
.setSize( 1000 )
.setInitialCapacity( 100000 )
.setConcurrencyLevel( 4 )
.newCacheService();

put( K key, V value )
put( K key, V value, int expiresIn )

© C2B2 Consulting Limited 2013
All Rights Reserved
Is Off-Heap The Future of Java?
• Oh God! Please no!
• R&D should be aimed to more effective GC
– Zing JVM (based on HotSpot, C4 - the fully
concurrent GC)
– RedHat Shenandoah?

© C2B2 Consulting Limited 2013
All Rights Reserved
Final Warning(s)
• Stay On-Heap unless you have
no other choice!
• If you think you have no other
choice, think twice
• Do NOT re-invent the wheel!
(Memory Management)
• Measure, measure, measure!

© C2B2 Consulting Limited 2013
All Rights Reserved
Further Sources
• http://mechanical-sympathy.blogspot.com/
– Martin Thompson. There is a brilliant mailing list as well!

• http://psy-lob-saw.blogspot.com
– Nitsan Wakart

• http://vanillajava.blogspot.com
– Peter Lawrey

• http://insightfullogic.com/blog/
– Richard Warburton

• http://ashkrit.blogspot.com
– Ashkrit

© C2B2 Consulting Limited 2013
All Rights Reserved
© C2B2 Consulting Limited 2013
All Rights Reserved
Thank you

© C2B2 Consulting Limited 2013
All Rights Reserved

More Related Content

PDF
Hidden pearls for High-Performance-Persistence
KEY
node.js: Javascript's in your backend
PDF
Node.js and How JavaScript is Changing Server Programming
PDF
JS Fest 2019. Тимур Шемсединов. Разделяемая память в многопоточном Node.js
PDF
Efficient content structures and queries in CRX/CQ
PPTX
Ops Jumpstart: MongoDB Administration 101
PDF
Cache is King: Get the Most Bang for Your Buck From Ruby
PPTX
Gc crash course (1)
Hidden pearls for High-Performance-Persistence
node.js: Javascript's in your backend
Node.js and How JavaScript is Changing Server Programming
JS Fest 2019. Тимур Шемсединов. Разделяемая память в многопоточном Node.js
Efficient content structures and queries in CRX/CQ
Ops Jumpstart: MongoDB Administration 101
Cache is King: Get the Most Bang for Your Buck From Ruby
Gc crash course (1)

Viewers also liked (20)

KEY
Davoxx 2012 - 'JMS 2.0 Update'
PPTX
JudCon 2010 Berlin: Practical Enterprise Java Performance Tuning
PPTX
G1 Garbage Collector - Big Heaps and Low Pauses?
DOC
Novo apendice ii_do_anexo_i_2013-11-14_10_15_08
PDF
Resenha espirita on line 99
 
PPT
GeeCon- 'www.NoSQL.com' by Mark Addy
PPTX
London JBUG – We’re back!
PPTX
Data Grids JSRs
PPTX
JUDCon London 2011 - Elastic SOA on the Cloud, Steve Millidge
PPTX
Coherence For Extreme Performance, Availablity and Scalability
PDF
Infinispan from POC to Production
ODP
Large Scale Migration from WebLogic to JBoss
PDF
'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit'
PPTX
Data Grids for Extreme Performance, Scalability and Availability JavaOne 2011...
PPT
Portlets 2.0 JSR286
PPT
Monitoring and Tuning GlassFish
PPTX
Programming WebSockets with Glassfish and Grizzly
ODP
Large Scale Deployment of SOA-P
PPT
Real Life Java EE Performance Tuning
PPTX
Tales From the Web Logic Front Line
Davoxx 2012 - 'JMS 2.0 Update'
JudCon 2010 Berlin: Practical Enterprise Java Performance Tuning
G1 Garbage Collector - Big Heaps and Low Pauses?
Novo apendice ii_do_anexo_i_2013-11-14_10_15_08
Resenha espirita on line 99
 
GeeCon- 'www.NoSQL.com' by Mark Addy
London JBUG – We’re back!
Data Grids JSRs
JUDCon London 2011 - Elastic SOA on the Cloud, Steve Millidge
Coherence For Extreme Performance, Availablity and Scalability
Infinispan from POC to Production
Large Scale Migration from WebLogic to JBoss
'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit'
Data Grids for Extreme Performance, Scalability and Availability JavaOne 2011...
Portlets 2.0 JSR286
Monitoring and Tuning GlassFish
Programming WebSockets with Glassfish and Grizzly
Large Scale Deployment of SOA-P
Real Life Java EE Performance Tuning
Tales From the Web Logic Front Line
Ad

Similar to Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the Memory (20)

PPTX
CQ5.x Maintenance Webinar 2013
PDF
Appsec usa2013 js_libinsecurity_stefanodipaola
PDF
Tips for better CI on Android
PDF
Manipulating memory for fun and profit
PDF
Manipulating Memory for Fun and Profit
PDF
Manipulating memory for fun and profit
PDF
Manipulating Memory for Fun & Profit
PDF
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
PDF
Fernando+Simon+-+HrOUG2020-ZDLRA_What_you_need_to_know_to_understand_it.pdf
PPT
Rust Programming Language
PPTX
Android secure offline storage - CC Mobile
PPTX
Android secure offline storage - CC Mobile
PDF
Us 17-krug-hacking-severless-runtimes
PPTX
5 Apache Spark Tips in 5 Minutes
PDF
Data Science Connect, July 22nd 2014 @IBM Innovation Center Zurich
PPTX
Ice Age melting down: Intel features considered usefull!
PDF
Advanced Administration, Monitoring and Backup
PPTX
Summer of Fuzz: macOS
PDF
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
PDF
Android Memory , Where is all My RAM
CQ5.x Maintenance Webinar 2013
Appsec usa2013 js_libinsecurity_stefanodipaola
Tips for better CI on Android
Manipulating memory for fun and profit
Manipulating Memory for Fun and Profit
Manipulating memory for fun and profit
Manipulating Memory for Fun & Profit
A Post-Apocalyptic sun.misc.Unsafe World by Christoph engelbert
Fernando+Simon+-+HrOUG2020-ZDLRA_What_you_need_to_know_to_understand_it.pdf
Rust Programming Language
Android secure offline storage - CC Mobile
Android secure offline storage - CC Mobile
Us 17-krug-hacking-severless-runtimes
5 Apache Spark Tips in 5 Minutes
Data Science Connect, July 22nd 2014 @IBM Innovation Center Zurich
Ice Age melting down: Intel features considered usefull!
Advanced Administration, Monitoring and Backup
Summer of Fuzz: macOS
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
Android Memory , Where is all My RAM
Ad

More from C2B2 Consulting (20)

PPTX
Monitoring Oracle SOA Suite - UKOUG Tech15 2015
PPTX
Hands-on Performance Tuning Lab - Devoxx Poland
PPTX
Monitoring Oracle SOA Suite
PDF
Advanced queries on the Infinispan Data Grid
PPTX
Through the JMX Window
PPTX
Building WebLogic Domains With WLST
PPTX
Hands-on Performance Workshop - The science of performance
PPTX
Jsr107 come, code, cache, compute!
PPT
JBoss Clustering on OpenShift
PDF
Through the JMX Window
PDF
Oracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at Scale
PDF
Java Middleware Surgery
PPTX
Jax London 2013
PPTX
Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...
PPTX
'Deploying with GlassFish & Docker'
PDF
'New JMS features in GlassFish 4.0' by Nigel Deakin
PPTX
Coherence sig-nfr-web-tier-scaling-using-coherence-web
PPTX
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
PPTX
Monitoring VMware vFabric with Hyperic and Spring Insight
PPTX
Middleware Expert Support Presentation
Monitoring Oracle SOA Suite - UKOUG Tech15 2015
Hands-on Performance Tuning Lab - Devoxx Poland
Monitoring Oracle SOA Suite
Advanced queries on the Infinispan Data Grid
Through the JMX Window
Building WebLogic Domains With WLST
Hands-on Performance Workshop - The science of performance
Jsr107 come, code, cache, compute!
JBoss Clustering on OpenShift
Through the JMX Window
Oracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at Scale
Java Middleware Surgery
Jax London 2013
Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...
'Deploying with GlassFish & Docker'
'New JMS features in GlassFish 4.0' by Nigel Deakin
Coherence sig-nfr-web-tier-scaling-using-coherence-web
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
Monitoring VMware vFabric with Hyperic and Spring Insight
Middleware Expert Support Presentation

Recently uploaded (20)

PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Modernizing your data center with Dell and AMD
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Cloud computing and distributed systems.
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Advanced IT Governance
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
NewMind AI Weekly Chronicles - August'25 Week I
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Modernizing your data center with Dell and AMD
Chapter 3 Spatial Domain Image Processing.pdf
Cloud computing and distributed systems.
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Mobile App Security Testing_ A Comprehensive Guide.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Advanced IT Governance
20250228 LYD VKU AI Blended-Learning.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
NewMind AI Monthly Chronicles - July 2025
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Dropbox Q2 2025 Financial Results & Investor Presentation
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I

Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the Memory

  • 1. Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the Memory Heap @author Jaromir Hamala, jhamala@c2b2.co.uk @author(type=Twitter) @jerrinot © C2B2 Consulting Limited 2013 All Rights Reserved
  • 2. Who Am I? ■ Jaromir Hamala ■ A curious developer ■ Who likes to break play with stuff © C2B2 Consulting Limited 2013 All Rights Reserved
  • 3. Safe Harbor This talk may contain non-sense! © C2B2 Consulting Limited 2013 All Rights Reserved
  • 4. Facts • Memory is Cheap • We have a lot of data • Data in Memory == Fastest Possible Data (apart from CPU caches) http://www.npr.org/blogs/thetwo-way/2012/06/06/154416480/ho-hum-dull-and-boring-are-now-a-pair © C2B2 Consulting Limited 2013 All Rights Reserved
  • 5. On-Heap Allocation • CoolObject cool = new CoolObject() • Great: – It’s easy and usually *very* fast! • Allocation can be actually faster than in C – GC goodies! • Not so great: – GC leads to Stop-the-World Pauses – Bigger Heap -> Longer Pauses © C2B2 Consulting Limited 2013 All Rights Reserved
  • 6. © C2B2 Consulting Limited 2013 All Rights Reserved
  • 7. © C2B2 Consulting Limited 2013 All Rights Reserved
  • 8. Why to go Off-Heap? • Latency caused by GC • Locality • Sharing with non-Java http://digboston.com/boston-lulz/2013/08/trolley-trollop-first-comes-love/attachment/why-god-why-kitten1/ © C2B2 Consulting Limited 2013 All Rights Reserved
  • 9. GC Implementations • (Old Gen) GC in HotSpot (Oracle/Sun JDK, OpenJDK) – ParOld – STW pauses by design! – CMS – fragmentation -> STW pause – G1 – Immature (yet?), not fulfilling the expectations -> occasional STW pauses © C2B2 Consulting Limited 2013 All Rights Reserved
  • 10. Latency can kill you! © C2B2 Consulting Limited 2013 All Rights Reserved
  • 11. What is Off-Heap? • Area of memory not maintained by GC – Manual memory control • No Notion of Java object – serialization http://nickshell1983.wordpress.com/2010/06/29/taking-a-god-nudged-leap-of-faith/ © C2B2 Consulting Limited 2013 All Rights Reserved
  • 12. Off-Heap Options? • • • • • Direct Memory Buffer sun.misc.Unsafe JNI Memory Mapped File …. http://en.wikipedia.org/wiki/File:Road_to_Hell_One_Sheet.jpg © C2B2 Consulting Limited 2013 All Rights Reserved
  • 13. Direct Memory Buffer • ByteBuffer directBuf = ByteBuffer.allocateDirect(int noBytes); • • • • Part of Java NIO Max. 2GB / buffer Pure Java = Portable getX()/putX() methods © C2B2 Consulting Limited 2013 All Rights Reserved
  • 14. sun.misc.Unsafe – long addr = unsafe.allocateMemory(noBytes) – Not a standardized part of JDK! – Implemented by most JVM vendors • Sun / Oracle / IBM – It can disappear from JDK without warning! © C2B2 Consulting Limited 2013 All Rights Reserved
  • 15. Cassandra I. public class NativeAllocator implements IAllocator { static final Unsafe unsafe; static { try { Field field = sun.misc.Unsafe.class.getDeclaredField("theUnsafe"); field.setAccessible(true); unsafe = (sun.misc.Unsafe) field.get(null); } catch (Exception e) { throw new AssertionError(e); } } public long allocate(long size) { return unsafe.allocateMemory(size); } public void free(long peer) { unsafe.freeMemory(peer); } } © C2B2 Consulting Limited 2013 All Rights Reserved
  • 16. JNI • Java Native Interface • Native library means worst portability between platforms • JNI Overhead • Can re-use already existing (native) allocator © C2B2 Consulting Limited 2013 All Rights Reserved
  • 17. Cassandra II. • Java Native Interface via JNA public class JEMallocAllocator implements IAllocator { public interface JEMLibrary extends Library { long malloc(long size); void free(long pointer); } private final JEMLibrary library; public JEMallocAllocator() { library = (JEMLibrary) Native.loadLibrary("jemalloc", JEMLibrary.class); } public long allocate(long size) { return library.malloc(size); } public void free(long peer) { library.free(peer); } } © C2B2 Consulting Limited 2013 All Rights Reserved
  • 18. Memory Mapped File • • • • Part of NIO Pure Java -> Portable Allows sharing data between processes Persisted by OS © C2B2 Consulting Limited 2013 All Rights Reserved
  • 19. Javin Paul, http://javarevisited.blogspot.com/2012/01/memorymapped-file-and-io-in-java.html private static int count = 1010241024; //10 MB public static void main(String[] args) throws Exception { RandomAccessFile memoryMappedFile = new RandomAccessFile("largeFile.txt", "rw"); //Mapping a file into memory MappedByteBuffer out = memoryMappedFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, count); //Writing into Memory Mapped File for (int i = 0; i < count; i++) { out.put((byte) 'A'); } System.out.println("Writing to Memory Mapped File is completed"); //reading from memory file in Java for (int i = 0; i < 10 ; i++) { System.out.print((char) out.get(i)); } System.out.println("Reading from Memory Mapped File is completed"); } © C2B2 Consulting Limited 2013 All Rights Reserved
  • 20. Use cases for Off-Heap? • Caches / Data Grids – A lot of data – Objects with well defined lifecycle • (Extremely) Latency-Sensitive tasks – High-Frequency trading… • Sharing Data with non-Java © C2B2 Consulting Limited 2013 All Rights Reserved
  • 21. Apache DirectMemory • “…is a off-heap cache for the Java Virtual Machine” • Easy to integrate • Friendly License • Experimental • http://directmemory.apache.org/ © C2B2 Consulting Limited 2013 All Rights Reserved
  • 22. DirectMemory Usage CacheService<Object, Object> cacheService = new DirectMemory<Object, Object>() .setNumberOfBuffers( 10 ) .setSize( 1000 ) .setInitialCapacity( 100000 ) .setConcurrencyLevel( 4 ) .newCacheService(); put( K key, V value ) put( K key, V value, int expiresIn ) © C2B2 Consulting Limited 2013 All Rights Reserved
  • 23. Is Off-Heap The Future of Java? • Oh God! Please no! • R&D should be aimed to more effective GC – Zing JVM (based on HotSpot, C4 - the fully concurrent GC) – RedHat Shenandoah? © C2B2 Consulting Limited 2013 All Rights Reserved
  • 24. Final Warning(s) • Stay On-Heap unless you have no other choice! • If you think you have no other choice, think twice • Do NOT re-invent the wheel! (Memory Management) • Measure, measure, measure! © C2B2 Consulting Limited 2013 All Rights Reserved
  • 25. Further Sources • http://mechanical-sympathy.blogspot.com/ – Martin Thompson. There is a brilliant mailing list as well! • http://psy-lob-saw.blogspot.com – Nitsan Wakart • http://vanillajava.blogspot.com – Peter Lawrey • http://insightfullogic.com/blog/ – Richard Warburton • http://ashkrit.blogspot.com – Ashkrit © C2B2 Consulting Limited 2013 All Rights Reserved
  • 26. © C2B2 Consulting Limited 2013 All Rights Reserved
  • 27. Thank you © C2B2 Consulting Limited 2013 All Rights Reserved