This paper presents and evaluates a set of analyses designed to reduce synchronization overhead in Java programs. Monitor-based synchronization in Java often causes significant overhead, accounting for 5-10% of total execution time in our benchmark applications. To reduce this overhead, programmers often try to eliminate unnecessary lock operations by hand. Such manual optimizations are tedious, error-prone, and often result in poorly structured and less reusable programs. Our approach replaces manual optimizations with static analyses that automatically find and remove unnecessary synchronization from Java programs. These analyses optimize cases where a monitor is entered multiple times by a single thread, where one monitor is nested withi...
The Java programming environment uses a highly-developed virtual machine (VM) to execute its program...
[[abstract]]In this thesis, we study how to apply the dynamic effective testing to Java programs whi...
A run-time monitor shares computational resources, such as memory and CPU time, with the target prog...
AbstractIn this paper, we describe three novel analyses for eliminating unnecessary synchronization ...
Abstract Language-supported synchronization is a source of serious performance problems in Java prog...
Multithreaded programs are notoriously prone to synchronization errors. Much prior work has tackle...
The Java language enables the development of concurrent and distributed software through the concept...
Languages allowing explicitly parallel, multithreaded programming (e.g. Java and C#) need to specify...
The monitor concept has been widely used in a concurrent programming environment for implicitly ensu...
This paper presents a static race-detection analysis for multithreaded shared-memory programs, focus...
Designers of concurrent programs are faced with many choices of synchronization mechanisms, among wh...
The need to protect computers from malicious software is ongoing. One approach uses static analysis ...
The Java Programming Language permits synchronization operations (lock, unlock, wait, notify) on an...
In multiprocessor systems with weakly consistent shared memory, memory fence (also know as barrier) ...
Abstract—Detecting bugs in concurrent software is challeng-ing due to the many different thread inte...
The Java programming environment uses a highly-developed virtual machine (VM) to execute its program...
[[abstract]]In this thesis, we study how to apply the dynamic effective testing to Java programs whi...
A run-time monitor shares computational resources, such as memory and CPU time, with the target prog...
AbstractIn this paper, we describe three novel analyses for eliminating unnecessary synchronization ...
Abstract Language-supported synchronization is a source of serious performance problems in Java prog...
Multithreaded programs are notoriously prone to synchronization errors. Much prior work has tackle...
The Java language enables the development of concurrent and distributed software through the concept...
Languages allowing explicitly parallel, multithreaded programming (e.g. Java and C#) need to specify...
The monitor concept has been widely used in a concurrent programming environment for implicitly ensu...
This paper presents a static race-detection analysis for multithreaded shared-memory programs, focus...
Designers of concurrent programs are faced with many choices of synchronization mechanisms, among wh...
The need to protect computers from malicious software is ongoing. One approach uses static analysis ...
The Java Programming Language permits synchronization operations (lock, unlock, wait, notify) on an...
In multiprocessor systems with weakly consistent shared memory, memory fence (also know as barrier) ...
Abstract—Detecting bugs in concurrent software is challeng-ing due to the many different thread inte...
The Java programming environment uses a highly-developed virtual machine (VM) to execute its program...
[[abstract]]In this thesis, we study how to apply the dynamic effective testing to Java programs whi...
A run-time monitor shares computational resources, such as memory and CPU time, with the target prog...