The latest release of Mission Control is finally here! Markus Eisele has blogged about it.
It can be downloaded here
The latest release of Mission Control is finally here! Markus Eisele has blogged about it.
It can be downloaded here
Since there was a bit of overlap in the previous schedule, my session has been moved to 14:15. The Hands-On-Lab remains at 11:15. These are the new times for my sessions:
Wednesday, December 7 |
Time | Room | Title | Abstract | Type |
11:15 – 13:15 |
Mezannine: Room 1 | Production-Time Problem Solving | This tutorial looks at some common problems and pitfalls in Java applications. It focuses on noninvasive profiling and diagnostics of running production systems. Problems tackled:
The presentation demonstrates all problems and solves them, running both the bad-behaving applications and the tools to analyze them from within the Eclipse Java IDE with the upcoming Oracle JRockit Mission Control Release 4.1. |
Hands-on Lab Java Core Platform |
14:15 – 15:15 | Exposition Hall: Auditorium 6 | HotRockit: What to Expect from Oracle’s Converged JVM | Oracle is converging the HotSpot and Oracle JRockit JVMs to produce a “best-of-breed JVM.” Internally, the project is sometimes referred to as the HotRockit project. This presentation discusses what to expect from the converged JVM over the next two years and how this will benefit the Java community. |
Conference Session Core Java Platform |
Looking forward to seeing you there!
I will be presenting the following two sessions at Java One in Brazil in December:
Wednesday, December 7 |
Time | Room | Title | Abstract | Type |
11:15 – 13:15 |
Mezannine: Room 1 | Production-Time Problem Solving |
This tutorial looks at some common problems and pitfalls in Java applications. It focuses on noninvasive profiling and diagnostics of running production systems. Problems tackled: The presentation demonstrates all problems and solves them, running both the bad-behaving applications and the tools to analyze them from within the Eclipse Java IDE with the upcoming Oracle JRockit Mission Control Release 4.1. |
Hands-on Lab Java Core Platform |
12:30 – 13:30 | Exposition Hall: Auditorium 6 | HotRockit: What to Expect from Oracle’s Converged JVM | Oracle is converging the HotSpot and Oracle JRockit JVMs to produce a "best-of-breed JVM." Internally, the project is sometimes referred to as the HotRockit project. This presentation discusses what to expect from the converged JVM over the next two years and how this will benefit the Java community. |
Conference Session Core Java Platform |
Looking forward to seeing you there!
My friend complained that his app for generating Swedish words did not work with Swedish characters. I complained that he should not be using such an app to begin with, but was challenged into whipping together this:
http://hirt.se:8080/WordFinderWeb/
I don’t recommend using this, as it really is cheating. If you are using this, let the friend you are playing with know! It really changes the character of the game to a pure strategy game.
I’ve been the proud owner of a Mac Book Air for a little while now. Because of work, I am dual booting it into Windows. A major annoyance, however, has been that everytime I switch to Windows, the Windows system clock has jumped two hours back in time (difference between CEST and UTC).
There reason is that Mac OS X is expecting the real time clock (RTC) to be in UTC, and Windows expects it to be in local time. Luckily, there is a simple fix to this (if you are using Vista SP 2 or Windows 7). Simply set the registry key DWORD value to 1: HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal
This will make Windows use UTC for the real time clock as well!
For more information:
http://www.insanelymac.com/forum/index.php?showtopic=226287
http://linux.wxs.ro/2011/05/16/windows-rtc-utc/
There has been a slight update to the schedule. The HOL on Wednesday has been moved to 10:15. The finalized schedule is thus:
This year my sessions are:
Day | Time | TItle | Location | Type | Length | Session ID |
Monday | 11:00 | Production-Time Problem Solving |
Hilton San Francisco – Franciscan Room A/B/C/D |
HOL | 2h |
22220 |
Monday |
14:30 |
Hilton San Francisco – Yosemite A/B/C |
Session |
1h |
22260 |
|
Tuesday | 13:30 |
Parc 55 – Market Street |
Session | 1h |
22261 |
|
Wednesday | 10:15 |
Marriott Marquis – Salon 3/4 |
HOL | 1h |
31140 |
Other sessions by the JRockit gang include:
Day | Time | TItle | Location | Type | Length | Session ID |
Tuesday | 20:30 |
Meet the JDK Project Leads |
Hilton San Francisco – Plaza A/B |
BoF | 45min | 25148 |
Wednesday | 10:00 | Showdown at the JVM Corral: Java 7 Edition |
Hilton San Francisco – Plaza A/B |
Panel | 1h | 23832 |
Looking forward to seeing you in San Francisco!
As promised in the blog entry before this one, I’m going to show how to easily add a new tab for visualizing lock instances. This can be done more elegantly in 4.1, so I will post an update to this once 4.1 is out the door.
This is roughly what we need to do:
Starting with #1, we need to start JRMC in design mode. This can be done by providing the parameter –designer to the jrmc launcher.
On windows you can simply provide a shortcut to JRMC and add –designer to the target:
The designer parameter will make available an additional view in JRMC which controls switching between design and run mode in Mission Control.
Next start up Mission Control, and open up a recording you know contains some Java Blocking events. Next open up the designer view, by clicking Window | Show View | Designer View, as shown below. This view will only be available if you started Mission Control with –designer.
I like to have the Designer View to the left, but feel free to drag-and-drop it to dock the view wherever you find is most convenient.
Now, to change the structure of the tabs, such as adding a new tab, you actually need to close the recording. This will show the structure of the tabs in the Designer View. Click on the CPU/Threads tab group, and select New | New Tab.
Fill out the information about the new tab:
Feel free to add a nice icon. 😉 Once the information is filled out, press OK and load the recording again. You should now have an empty Lock Instances tab available.
Press the stop button in the Designer View to enter design mode. First thing we need to do is to choose how to layout the component. Right click the surface and select Vertical Split:
Add a histogram to the top half, by right clicking the top half and selecting Assign Component | Histogram | Event Histogram. In the dialog that appears, do the following changes:
Click the play button to see your new histogram in action:
To add the trace tree, press stop to enter design view. Right click the bottom space and select Assign Component | Tree | Trace Tree. In the dialog that opens, modify:
Press play to show the ready made tab ( don’t forget to select a Lock instance in the master histogram):
Last but not least, export the tab to a plug-in that you can share. First close the recording to see the tab structure again. Next right click on the Flight Recording root node. Select Export UI to Plug-in. In the dialog that follows, select only the Lock Instances tab. Press OK. You will now be presented with a dialog where the plug-in name and version can be changed. Once you are happy with the settings, click OK. Next select a place to save the plug-in. Once you’ve chosen a memorable spot, press OK.
Done!
The resulting .jar file can be used by anyone simply by placing it in the missioncontrol/plugins folder.
Tip: To add a Range Selector at the top, look at how the other tabs are configured in design mode.
There you are, submitting your poor application to the worst load imaginable. However, after looking at the profiling data in Mission Control, the evil grin on your face is quickly replaced by a look of surprise. The [CPU] load on the machine is only a fraction of what should be available to your application. You’ve got a throughput problem.
Picture of heavily loaded multi-threaded app running on a multi-core machine
Mission Control contains a lot of information about why your application isn’t spending time executing Java code. Events are produced for almost everything that can make your threads halt. For example, in the Contention tab there is aggregated information, per class, about what classes of locks are blocking your threads (on monitor enter) the most.
Sometimes, however, you really want to look at the information on a per lock instance basis. Take the following example:
You may, for example, want to know if all the sun.misc.Launcher$AppClassLoader locks are one and the same [instance], or if there are several in play. The easiest way to check this is to set the operative set to the events for that lock class, and then view those events in a histogram grouped by the monitor address (don’t let the name confuse you – it’s actually the lock address).
First add to the operative set:
Then build the histogram (don’t forget to check Show Only Operative Set):
Indeed, in this case they are blocking on the same instance. Admittedly a silly example, but you get the idea. Note that one drawback is that the monitor address information is only guaranteed to be coherent in between garbage collections, as the lock object may have been moved due to propagation and/or compaction during a garbage collection. If it is very important to not have a certain lock instance being reported more than once, make sure you study a range between two garbage collections.
Now, if you find yourself looking at this kind of information a lot, you may want to redesign the GUI to contain this information in a separate tab. This is easier to accomplish than you may think; I’ll post another blog with step-by-step instructions on how to accomplish that in a bit.
I sadly could not make it to EclipseCon last year. It was sad for so many reasons, not the least being that Sweden during that part of the year is cold and dark. 😉 This year, however, I will be contributing two talks:
—>
Oracle is converging the HotSpot and JRockit JVMs to produce a "best of breed JVM". Internally the project is sometimes referred to as the HotRockit project. There is already a large influx of ideas and solutions provided by the JRockit JVM into the Open JDK.
Examples of improvements include:
This talk will discuss what to expect from the converged JVM over the next two years, and how this will benefit the Eclipse community.
This session will look at some common problems and pitfalls in Java applications. The focus will be on non-invasive profiling and diagnostics of running production systems. Problems tackled will be:
Excessive GC
Finding hotspots and optimizing them
Optimizing the choice of data structures
Synchronization problems
Finding out where exceptions are thrown
Finding memory leaks
All problems will be demonstrated and solved running both the bad-behaving applications and the tools to analyze them from within the Eclipse Java IDE.
<—
I hope to meet you there!
Soon JavaOne, Oracle Develop and Oracle Open World will be here – this time at the same time and the same place! The huge conference(s) will take place in San Francisco September 19 – 23. This year JRockit will be represented in all three conferences. Here are two tables I’ve put together with all (AFAIK) JRockit related talks.
The sessions where JRockit team members are directly involved are:
Session ID | Time | Location | Title | Type | Conference |
S317386 | Mon 12:30 | Marriot Marquis/Salon 9 | Oracle’s Java Virtual Machine Strategy | CS | OOW |
S318576 | Mon 13:00 | Hilton San Francisco/Imperial Ballroom B | Build Virtual Appliances: Oracle WebLogic Server/Oracle JRockit Virtual Edition | HOL | J1/OD |
S317458 | Mon 13:00 | Hotel Nikko/Nikko Ballroom II | Next-Generation Diagnostics with Oracle JRockit Flight Recorder | CS | J1/OD |
S317468 | Mon 16:00 | Hotel Nikko/Peninsula | Oracle JRockit: Advances in Java Virtual Machine Technology | CS | J1/OD |
S318579 | Tue 13:00 | Hilton San Francisco/Imperial Ballroom B | JVM Analysis: Oracle JRockit Mission Control and Oracle JRockit Flight Recorder | HOL | J1/OD |
S313785 | Wed 10:00 | Parc 55/Cyril Magnin I | Experience Talk: Understanding Adaptive Runtimes | CS | J1/OD |
I’m presenting at the following sessions: S317468, S318579 and S313785.
Other sessions that seem to be JRockit related are:
Session ID | Time | Location | Title | Type | Conference |
S317471 | Tue 8:00 | Hotel Nikko/Nikko Ballroom II | Application-Aware Virtualization | CS | J1/OD |
S317476 | Tue 12:30 | Marriott Marquis/Salon 9 | Application Grid: Practices and Results from Real-World Enterprises | CS | OOW |
S318580 | Tue 14:30 | Hilton San Francisco/Imperial Ballroom B | Total Oracle WebLogic Server Development with Eclipse, Maven, and Hudson | HOL | J1/OD |
S317406 | Tue 15:30 | Moscone West L3/Rm 3022 | Increasing Performance and Reducing Costs with Oracle WebLogic Suite | CS | OOW |
Please let me know if I’ve missed any JRockit-related sessions!
For more information, check the content catalog.
HOL = Hands On Lab – you get hands on experience with the technology in front of a computer. Tutorials.
CS = Conference Session – traditional conference talk.
J1/OD = Java One/Oracle Develop
OOW = Oracle Open World