It's a situation nearly every Java developer faces - Murphy's Law strikes at
the most inconvenient moment: a critical application upon which everything
depends suffers from an elusive heap memory leak and begins throwing
OutOfMemoryErrors.
After fruitless hours spent trying to re-create the conditions spawning the
leak in a debugger, nothing is gained. If you're like me, you check the Java
APIs one more time in vain, just to remember that the System.getFreeMemory()
method is about the only indication you have of when memory is tight. "Of
course, the memory's running thin!" you shout to yourself. "What I really
need to know is where the memory is going!" Even worse than this is a
critical deadlocking of threads, leaving a JVM staring blankly at frustrated
programmers. It's generally around this time that a developer starts wishing
that the JVM had a way to police it... (more)
Of all of the possible technologies to arise out of the first consumer
Internet revolution, instant messaging (IM) is a bit of an enigma. Its
incredible popularity challenges that of the Internet's first "killer app,"
e-mail, yet it does so mostly by offering the features of e-mail in a
slightly different package.
At the core of any IM system lies the capacity to rapidly send a message from
one client to another. The second most important feature in an IM system is
the capacity to recognize when certain users of the system have become
available. When these two features are put t... (more)