Recently, I helped design a Java server application that resembled an in-memory database. That is, we biased the design toward caching tons of data in memory to provide super-fast query performance.
Once we got the prototype running, we naturally decided to profile the data memory footprint after it had been parsed and loaded from disk. The unsatisfactory initial results, however, prompted me to search for explanations.
Note: You can download this article’s source code from Resources.
The tool
Since Java purposefully hides many aspects of memory management, discovering how much memory your objects consume takes some work. You could use the Runtime.freeMemory()
method to measure heap size differences before and after several objects have been allocated. Several articles, such as Ramchander Varadarajan’s “Question of the Week No. 107” (Sun Microsystems, September 2000) and Tony Sintes’s “Memory Matters” (JavaWorld, December 2001), detail that idea. Unfortunately, the former article’s solution fails because the implementation employs a wrong Runtime
method, while the latter article’s solution has its own imperfections:
Find A Teacher Form:
https://docs.google.com/forms/d/1vREBnX5n262umf4wU5U2pyTwvk9O-JrAgblA-wH9GFQ/viewform?edit_requested=true#responses
Email:
public1989two@gmail.com
www.itsec.hk
www.itsec.vip
www.itseceu.uk
Leave a Reply