Skip to main content

Posts

Showing posts with the label lazy loading

How To Use Lazy Loading for Efficient Java Logging

It is always a good Java programming practice to prefix log statements with a check for "loggability" by testing Logger.isLoggable(Level) prior to logging. However, this practice presents Java developers with a dilemma: Failing to do so results in slower performance, but following it contributes to more total lines of code. Often, developers opt to just bypass it. In this intermediate Java tip, Jason Weinstein offers a solution: lazy loading. By wrapping Java logging in your own class (as shown below), you can ensure the isLoggable() test is always made, while at the same time lazily binding the message creation so that it occurs only when the message is going to be logged.

What Is Lazy Loading?

Lazy loading means not creating an object until the first time it is accessed. Lazy loading typically looks like this: public class Example { private Vector data = null; public Vector getData() { if (this.data == null) { this.data = new Vector(); // Load data into vector … } return this.data; } } This technique is most useful when you have large hierarchies of objects (such as a product catalog). You can lazy-load subordinate objects as you navigate down the hierarchy, and thereby only create objects when you need them.