Optimizing Code in Java
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
Manual Memory Management (C/C++)
$$
Java's Garbage Collection
GC Performance Trade-offs
$$
GC Algorithms
// Bad - Creating many short-lived objects for (int i = 0; i < 1000000; i++) { new Object(); // Immediately becomes garbage }
// vs. Reusing objects Object obj; for (int i = 0; i < 1000000; i++) { obj = new Object(); // Only one reference }
// Avoid this in performance-critical code String result = ""; for (int i = 0; i < 100000; i++) { result += i; // Creates a new String each time }
// Better approach StringBuilder builder = new StringBuilder(); for (int i = 0; i < 100000; i++) { builder.append(i); // Reuses the same buffer } String result = builder.toString();
// Predictable branches help JIT optimization
if (value > 0) {
// Code A - frequently taken path
} else {
// Code B - rarely taken path
}
Optimizing Code in Java