Identifying large objects consuming memory in the Java heap

Recently, we experienced some excessive memory consumption that was leading our servers into an out-of-memory (OOM) condition. To troubleshoot the issue, we needed a way to identify any large objects that were filling up the heap. As it turns out, there’s a JVM argument for this.

Generic JVM argument: -Xdump:stack:events=allocation,filter

If you set this option, whenever an allocation request is made for an object greater than or equal to the given size, the Java stack trace corresponding to the thread requesting the allocation is printed into the standard error log. From this stack trace, you can easily see which actual Java class is eating up all your memory. For example, the following setting will print the stack information for all allocations over 10 megabytes to the native_stderr.log:


You can also view an allocation within a certain range of values. The following, for example, will print the stack information for all allocations between 2m and 4m to the native_stderr.log


You can read more about this in the following IBM technote:

Identifying the Java stack of a thread making an allocation request larger than a certain size

Sometimes, UML doesn’t suck

I’ve had a love/hate relationship with UML. For most of my career, I think there may have been more hate than love; frustration, at least. Usually, I get frustrated when trying to use some kind of tool to draw a diagram. If the tool is too automated, I never get what I really want out of it. If the tool has too little automation, I find myself having to refer to a reference book (I forget if it’s an open arrow, closed arrow, dotted line, whatever).

But more and more, recently, I’ve been learning that UML can be a great way to troubleshoot and analyze code if you just forget all the rules and whip that shit out with good old fashioned pen and paper. Maybe this is not an effective tool for communication, but it can be an effective tool for thinking.


I find that when I’m just writing UML just for myself, it helps me think and keep track of where I’m at in the code (especially complex code or spaghetti code).

Seven ways to get relationships right

Recently, Mike Minardi, our CEO at Base22 sent an email to the staff providing tips on how to build enduring, long term, and trusting relationships. I wanted to share his list with the rest of the world because I thought it was pretty good one – the kind that’s worth reviewing from time to time. Whether it’s a personal or professional relationship doesn’t matter; his recommendations work for every kind.


Enabling SEO Friendly URLs in WebSphere Portal

I always like the products of Michele Buccarello’s studies on IBM Digital Experience software. You may recall previously that I wrote about his Step by step guide to create a custom theme in WebSphere Portal 8.5. Whether or not you approach a solution exactly as he prescribes, you can always learn something useful from his work. When it comes to friendly URLs in WebSphere Portal, things are definitely getting better, but they’ve always been a source of contention. This latest publication from Michele has some informative gems on the subject, so check it out.

Crunch! – a LESS editor and compiler that makes it easy

Less is a CSS pre-processor. It extends the CSS language by adding features that allow variables, mixins, functions and many other techniques that make your CSS more maintainable, themable and extendable. Less runs inside Node, in the browser and inside Rhino. There are also many 3rd party tools that allow you to compile your files and watch for changes.

One such tool is Crunch! It’s an extremely simple editor and compiler that can optionally minify the CSS output it generates. For a no-nonsense, get-the-job-done-quick solution, Crunch! can be a great addition to your toolbox. Check it out.


If you plan to attend IBM’s ConnectED conference this year, you may be interested in a talk by Dan Makuch, an Enterprise Solution Architect and Project Manager from Base22. The new Digital Data Connector technology in WebSphere Portal provides a host of capabilities to do deep integration of social content with a traditional portal front end. Base22 recently completed one of the first production implementations of this technology for a client in the digital imaging industry. In his session, Dan will take you under the covers to show you how we built some of the more interesting aspects of the site. He’ll share lessons learned and offer some tips that should enable your future efforts to go more smoothly.

Date: January 27, 2015
Time: 08:00-09:00 a.m.
Event: IBM ConnectED 2015
Topic: BP401 - Building An Online Community Portal With WCM, Connections, And The Digital Data Connector
Sponsor: IBM
Venue: Walt Disney World Swan, S. Hem 2
Public: Private

Living Language – IBM’s shared vocabulary for design

IBM Design

Recently I posted about Google’s visual design language, Material Design. Now, it seems that IBM Design has stepped in with their own shared vocabulary called, the Living Language. With new design centers in Austin, New York, Shanghai, Dublin, and Hursley, IBM has really been stepping up its design game. We’ve felt the impact recently with the Digital Experience software; the latest versions of IBM WebSphere Portal and IBM Web Content Manager are the slickest yet. Also, at Base22, we’ve been invited to provide our experience and feedback to the design team on several occasions. And yes – I’ve seen some of that feedback make it into the products.

I’m proud of IBM for the work they’ve been doing. They’ve recommitment to the value of design and the user-centered design process on a massive scale. They’re reaching out to real end-users, listening carefully to the feedback, and it’s starting to show. We salute you, IBM Design; keep plowing!

IBM Design's Living language

Recently, I worked on an image for Base22’s quarterly email newsletter. In order to use a group shot of our team, I needed to isolate them from the warehouse setting in which they were photographed. I thought I’d take the opportunity to record the job in case my technique is useful to anybody else. In this video, I demonstrate one of several techniques for image isolation in Adobe Photoshop. This particular technique allows you to erase or reapply image pixels by painting greyscale values on a layer mask. A layer mask is essentially an alpha mask applied to a given layer that you can paint on. Wherever you paint black, the pixels in the layer become transparent. Wherever you paint white, they become opaque.There are many cool tricks you can do with layer masks once you understand how to use them, so it’s good ground to cover – even if you prefer to use other techniques for isolation.

Disclaimer: If I sound slightly weird in this video, it’s because it was so damned long and boring, I sped it up by 120% in the talking parts in order to get to the point faster. I sped up working segments as much as 1000% to get the overall job (about 1 hour’s worth of work) down to 16 minutes in overall video.