Often developers of software are too much focused on the technical issues in a project. This results in a disfigured domain design of the application. The names of the classes of the domain are general and therefore meaningless. For example names as XMLData, ContentFile in a custom application for a client.It signals that communication or/ and involvement with the client or analist was poor.
As a consequence it is very hard for the next developer to grasp the meaning of the application and to integrate new functionality into the existing application. In a sense the integrating project is burdened from the start.
So stay away from those meaningless names for yourself and others. Make an effort with the client to grasp the domain. A good trick can be to globally explain the object design of your application to the client and listen for confirmation or a puzzled response.
Find the memory leaks in your app with Eclipse Memory Analyzer ( MAT ). This Eclipse plugin can give you a detailed view on object level of memory consumption in the JVM of your application.
When you are dealing with a OutOfMemoryErrors , a slow process or your just refactoring your application MAT analyzes for you a heapdump from the JVM and can give you insight where to look. Here are some screenshots from a heapdump.
[click to enlarge]
[click to enlarge]
The plugin has really a ton of options, look on http://www.eclipse.org/mat/ for more info.
How do you obtain an memory dump from the JVM you are now thinking probably.
Well, there are several options.
- If you have started your JVM with the argument
-XX:+HeapDumpOnOutOfMemoryError you get dumps in the case you have OutOfMemoryErrors
-XX:+HeapDumpOnCtrlBreak to your JVM will write a heap dump together with thread dump on CTRL+BREAK
- Use JConsole MBean HotSpotDiagnostic to force a heap dump with the dumpHeap operation.
! Last option works only with JDK 6. Give the name of the file as first argument to the operation. The dump is written in the home directory of the user on a Linux OS. (Do not know how it works on Windows )
I just installed the new Artifactory, 2.0, at home and I must say the improvements in functionality and styling is really topnotch. I have always had Artifactory as maven repository manager as it was easy to setup and to upgrade, but recently I was tempted to try out Nexus as maven repository. The reason for that was Nexus had easier configuration of repositories in the GUI of the application.
Not anymore. In the new version of Artifactory it is also possible to create repositories. The simple yet effective layout is still there and that is for me the big difference with Nexus.
Artifactory uses Wicket as servlet framework and Dojo with Dijit for AJAX. The application is showcase for building Web 2.0 web-applications. Everywhere there are popups on mouseovers or clicking the context-button giving functionality. It really feels like a desktop application. It is also a testimony what one can achieve using Wicket. I moved this month to a new company in Amsterdam where they also develop software with Wicket and I am dying to build some stuff like this. Seeing how it is used in Artifactory is really inspiring. Lot’s of kuddos for the guys at JFrog.
Try it out yourself.