harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Regis <xu.re...@gmail.com>
Subject Re: [jdktools][jdwp] Updated Java 6 JDWP contribution
Date Fri, 08 May 2009 10:51:34 GMT
Oliver Deakin wrote:
> Hi Gregory,
> Regis made most of the performance improvements, so I will let him 
> answer on that front. From the point of view of bugs, here are some of 
> the rough areas we made fixes in:
> - Stepping correctness - there were some bugs related to debug stepping, 
> particularly once we had JSR-45 support in and started debugging 
> non-Java stratum code. As an example, there were some scenarios where a 
> user would have to click step-over twice to move over a single line of 
> Java code. In non-Java code, there were cases where the line map would 
> not be interpreted correctly and we would end up "running away" as if we 
> had resumed the code rather than stepping.
> - A number of crashes were uncovered, many from timing issues which were 
> exposed as the performance increased. These generally came from using 
> pointers that had already been freed, double freeing a pointer or 
> similar memory access/addressing issues.
> - Some bugs related to JDWP returning incorrect values to queries. For 
> example, getting a count of all instances of a class when debugging in 
> Eclipse would often return an incorrect value, as (iirc) the agent was 
> holding references to objects that should have been released and made 
> available for garbage collection. The number returned would then appear 
> higher than it should because JDWP was still keeping instances alive 
> that were no longer referenced by the application.
> - Issues around socket behaviour varying from platform to platform 
> created a number of bugs.
> I hope this gives some idea of the kind of bugs we fixed - some related 
> to debug behaviour correctness, some related to porting to other 
> platforms and some were more general programming bugs (e.g. using freed 
> pointer).
> Regards,
> Oliver
> Gregory Shimansky wrote:
>> This is very good news to me. I like to see this part of Harmony to 
>> continue its development since JDWP agent wasn't touched for quite 
>> some time since its contribution with just several bugs fixes by its 
>> original developers and me.
>> Could you give the details about what actually increased the 
>> performance in it and what kind of bugs were fixed?
>> On 29 April 2009 Oliver Deakin wrote:
>>> Hi all,
>>> A little while ago, IBM created a mirror of the Java 6 jdktools branch
>>> so that we could start bringing Harmony JDWP into the IBM Java releases.
>>> We began working in that mirror because it was convenient for our
>>> internal builds, with a plan to reflect all changes we made back into
>>> Harmony as we went. Unfortunately, as deadlines drew in and releases
>>> came and went those plans did not come into fruition - until now :)
>>> I'd like to announce the contribution of an enhanced Java 6 level JDWP
>>> agent and socket transport layer. It has been attached to HARMONY-6187
>>> [1] for everyone to try out - please take a look. It has the following
>>> enhancements:
>>>  - A large number of bug fixes.
>>>  - Ported to a wide variety of platforms - Linux x86/x86_64, Linux PPC
>>> 32/64, zLinux 31/64, Windows x86/x86_64, AIX PPC 32/64 and zOS 31/64.
>>>  - As part of the porting process, all non-portable C++ usage has been
>>> removed and rewritten, particularly use of C++ standard libraries.
>>>  - JSR 45 support implemented. The new JDWP agent allows debugging of
>>> non-Java stratum code running on the VM, for example JSPs.
>>>  - Significant performance improvements.
>>> All authors already have ACQs recorded. There may be some more work to
>>> be done to get the new JDWP functioning 100% with Harmony, but I'd
>>> rather do that work out in the open once it is committed. Please let me
>>> know if there are any objections/comments to this contribution! I'll
>>> give it a few days and then start a vote.
>>> Regards,
>>> Oliver
>>> [1] https://issues.apache.org/jira/browse/HARMONY-6187

There are several performance improvements. Some could be treated as bugs, for 
example, agent thread didn't manage JNI local reference (slow down jvmti call 
which need to allocate memeory on java stack frame), thread wasn't removed from 
thread list (slow down travelling list).

The most of improvements focus on memory manage and I/O:
- Use one worker thread to handle asynchronized command to avoid to start agent 
thread every time
- Reduce times to read/write socket
- Use pre-allocated buffer for reading/writing data from/to socket to avoid to 
allocate memory every time
- Optimize memory manage of PacketParser

Best Regards,

View raw message