![]() |
![]() |
Chris Laffra
Wing Hong (Albert) Ho
Eclipse offers non-traditional performance challenges that have to do with the adoption of a large framework. It has been wisely coined that every Computer Science problem can be solved by adding one more layer of abstraction. The various Eclipse abstractions such as plugins, extension points, and features, allow developers to grow Eclipse to an unprecedented size. Some products include over 2,000 plugins. However, profiling tools typically only show low- level details that make it hard to rediscover the abstractions. For instance, one single API call in JDT may unwittingly result in millions of method calls if the workspace is large. Stack traces of 500-600 deep are not exceptional. How do we profile such large applications and make sure we don't get lost?
In addition to performance, memory consumption is highly relevant for Eclipse applications. Most Eclipse applications, including IDE extensions, are just in the business of converting data into different formats, such as from XML into a binary registry, Java source into class files, JSPs into Java and HTML, etc. Data conversion is often an expensive process, and plugin authors quickly resort to using a cache to play the space/time tradeoff game. Monitoring Java heap growth and doing blame analysis is far from trivial. It can be quite difficult to discover who owns a certain string when the heap measures 600MB and contains millions of objects.
What we will go over in this session is a set of publicly available profiling tools, and see how they can be used to profile Eclipse and analyze its heap usage and detect leaks. Various live demos will be given on real Eclipse scenarios and we will see how these profiling tools help address complexity.
Chris was born in The Netherlands, obtained a MsC at the Vrije Universiteit of Amsterdam and a PhD at the Erasmus University of Rotterdam. At both IBM T.J. Watson Research Center and Morgan-Stanley, Chris worked on tools for user interfaces, component infrastructures, program analysis, debugging, visualization, compression, and optimization. He led the OTI Amsterdam lab for 3.5 years, working on WebSphere Studio Device Developer. He worked with IBM Rational in Ottawa on Java runtimes and Eclipse and in RTP on Eclipse Performance. Currently he works on EGL, IBM's 4GL solution.
Albert joined IBM in 1999 after graduating from the University of Waterloo in Canada with a degree in Pure Mathematics and Computer Science. Most recently he is a core member of the Rational Performance Engineering team. In addition to performance, he is also interested in IDE construction and programming language design.