Object Instance Profiling

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "Object Instance Profiling"

Transcription

1 Object Instance Profiling Lubomír Bulej 1,2, Lukáš Marek 1, Petr Tůma 1 Technical report No. 2009/7, November 2009 Version 1.0, November Distributed Systems Research Group, Department of Software Engineering Faculty of Mathematics and Physics, Charles University Malostranské nám. 25, Prague, Czech Republic phone , fax Institute of Computer Science, Academy of Sciences of the Czech Republic Pod Vodárenskou věží 2, Prague, Czech Republic phone Abstract. Existing Java profilers mostly use one of two distinct profiling methods, sampling and instrumentation. Sampling is not as informative as instrumentation but the overall overhead can be small. Instrumentation is more informative than sampling, since it intercepts every entrance and exit in the measured code, but the overhead is large. In this paper, we propose a method that collects profiling information associated with a specific object instance, rather than with a specific code location. Our method, called object instance profiling, can collect contextual information similarly to other instrumentation methods, but can be used more selectively and therefore with lesser overhead. 1 Introduction Profiling is a general method for determining application performance characteristics, which is based on collecting various performance data during application execution. The results of profiling typically allow identifying performance critical parts of an application, which are then prime candidates for developer attention when improving performance or addressing a performance issue. Profiling techniques come in two basic flavors. One of them is sampling based profiling, which relies on periodic sampling 3 of various data during application execution. At the very least, the collected data includes the value of the processor instruction pointer register, but other data, such as values of processor and operating system performance counters, can be collected as well. The sampled values of the instruction pointer are then mapped to individual methods and modules of the profiled application to determine their contribution to the total execution time. Sampling based profiling is generally applicable to native code 3 The sampling is driven by interrupts from a timer or a processor performance counter.

2 applications, because the profiled application is executed without any modification in its code. For managed execution environments such as Java, or CLR, profiling must supported by the virtual machine to obtain performance data related to application code and not the virtual machine itself. Naturally, profiling incurs overhead in the application execution, which is largely dependent on the sampling period, and the amount and kind of collected performance data. The sampling period directly influences the precision of the results and can be configured to limit the profiling overhead. The other technique is instrumentation based profiling, which relies on instrumenting the original application with special code to collect performance data upon occurence of significant events in application execution. Depending on the placement of the instrumentation code in the application, the events can cover a wide range of situations, including method entry and exit, performing I/O operations, etc. Due to ability to relate performance data to particular application events, instrumentation based profiling can provide more accurate and more specific information on application performance, but requires specialized tools to perform application instrumentation for particular execution environment. Overhead of instrumentation based profiling depends on the number of instrumented places in the application as well as on the kind of performance data collected. To avoid excessive overhead, the instrumentation can be performed selectively or include support for activation and passivation of the instrumentation code at runtime. As for the kind of performance data collected during profiling, besides various performance counters, both profiling techniques often collect stack traces to provide more detailed information on the execution context. Using stack traces allows distinguishing among invocations of the same method by different callers, thus enabling, e.g., identification of code paths responsible for turning particular methods into hot spots. However, obtaining a stack trace is a time consuming operation, which significantly increases the profiling overhead. While the profiling overhead might be acceptable during development, it is undesirable to include support for instrumentation based profiling in production application to implement runtime monitoring. For this purpose, we need to limit the use of stack traces to minimum and employ different techniques for obtaining more information on execution context. To address the issue, we propose an instrumentation based profiling technique, referred to as object instance profiling, that uses object instances instead of stack traces to obtain information on the execution context. The technique is not a replacement for stack traces, because it can be only applied on instance methods and the provided context information is not equivalent to a call stack. But in many cases, the instance based context information is sufficient, and the technique can be also used to collect instance-specific performance data, which is difficult with stack traces. We describe the principles of object instance profiling in Section 2 and highlight the differences between stack trace and instance based context information. We provide overview of different implementation options in

3 Section 3 and discuss related work in Section 4. Finally, we discuss future work and conclude the paper in Section 5. 2 Instance based context information The results of commonly used profiling techniques, hereafter refered to as code profiling, are typically mapped back to application code with the granularity of methods, classess, and packages or name spaces. If stack traces are collected during profiling, the results are parametrized by the context (call stack) in which the code executed. Different performance exhibited on instances containing different data may be observed in the same code executed in different contexts, since different callers may use different instances. If a class only has a single instance, the performance will be the same in all contexts, but we may still be able to distill valuable information from the context-specific profiles. The proposed method, hereafter refered to as object instance profiling, does not provide explicit caller context, but allows to directly observe instance-specific code performance. The caller context provided by object instance profiling is indirect, tied to object instances. Naturally, if a class only has a single instance, the observed performance will not differ from that obtained through classic code profiling and we will be also unable to distinguish among different caller contexts, because callers sharing an object instance will appear to be in the same caller context. If a class has multiple instances, object instance profiling requires each instance to have a unique identity, which must be mapped back to code using the particular instance. The difficulty of this task varies with the kind of application and classes it is applied to. In case of component based applications, the difficulty may be lower, because such applications tend to have a static architectural backbone and typically require component instances to be named. On the other hand, the difficulty will be higher for general applications with less explicit architecture, or for library classess used only temporarily in method scope. Compared to classic code profiling with stack traces, the object instance profiling approach brings two potential advantages. The first is the reduced overhead of obtaining caller context. Even though the instance based context is not a direct substitute for call stack, it may be sufficient in many cases and, contrary to call stack, does not need to be constructed on every method invocation. The second advantage is the already mentioned ability to collect instance-specific performance data on class methods. To demonstrate the advantages of the approach, consider the following two scenarios. In one scenario, a method uses an abstract class or an interface to work with different types of instances. In case of classic instrumentation based code profiling, a method instrumentation code will associate performance data only with the class where the method was defined. If a method calls an overriden superclass method, also the performance data for the superclass method will be collected and associated with the superclass, increasing the profiling overhead and including it in the outer method performance data. Using the object instance

4 profiling, performance data will only be collected in the first outer method called on an instance, without duplicating the effort when calling overriden superclass methods. In another scenario, method code calls a particular method on multiple instances of the same class, each holding different data. If the called method execution path depends on the data, classic stack trace based code profiling will aggregate (different) performance data from all the instances, providing meaningless results. To obtain better results, such cases need to be identified and instrumented by hand [1], whereas the object instance based approach will provide instance-specific performance data that can be parametrized by instance content. 4 On the other hand, stack trace based context information is available for any method, not just an instance method. The stack trace provides information on linkage among classes, which is impossible to obtain when using instance based context information. Moreover, tracking context of an instance that is used throughout the whole application is very difficult, if not impossible. That, however, can be remedied by adding stack trace context information to the object instance profiling technique. If used selectively, it can mitigate the drawbacks of the technique in special cases while keeping the overhead low in the most common cases. 3 Implementation options Due to its nature, object instance profiling is best implemented as an instrumentation based profiling technique, which requires modifying the application code so that it collects performance data. There are many ways to instrument an application [2] and we do not intend to describe them here in detail. Even though the object instance profiling is a general technique, we are mostly interested in its implementation in a managed execution environment. Best suited for such environment are source code and byte code instrumentation techniques. There are several ways to implement the object instance profiling. Since the work on implementing object instance profiling is still in progress, we will shortly describe each of the implementation options and only explain the basic idea without going into much detail. The common goal in all cases is to wrap the original instance and provide it with a unique name that would be stable between multiple invocations and allow tracing the use of a particular instance back to code. 3.1 Proxy objects The most straightforward method to implement object instance profiling is to use proxy objects delegating method calls to the original instances. A proxy object will provide the same interface as the original object, but besides calling 4 Assuming the content does not change during the instance lifetime.

5 the original method on the target object to handle the call, the code of the proxy object will collect performance data (or trigger its collection). Depending on the link to the original method code, a proxy can be delegation based or inheritance based. In both cases, the implementation type of the proxy object differs from that of the original, even though it implements the same interface. Delegation based proxy object is typically a separate object instance that keeps explicit reference to the target object and uses it to invoke the original methods. Inheritance based proxy object extends the class of the original object and overrides all methods that have to be instrumented. Due to inheritance, the proxy and the original share the same object instance. The main advantage of using proxy objects is precise control over instrumented instances only the wrapped instances are instrumented and collect performance data. But there are several issues associated with proxy objects that need to be addressed in a particular context. The delegation based proxy objects can be applied basically to any object instance, including instances of final classes. However, the most burning issue is related to object identity. Since there are two objects, there are two object references and we must ensure that only the reference to the proxy object is used by other code. If the target object leaks reference to itself to other parties as a part of method argument, return value, or global data, or if it calls its own public methods, the proxy object will be bypassed. The proxy object can include special code to replace target object reference in return values, but little can be done for the other situations in which references are leaked. The inheritance based proxy objects elegantly sidestep the identity issue, because there is only a single object and therefore a single reference. However, the inheritance based approach cannot be easily applied to final classes. Additional issue plaguing the delegation based proxy objects is that the type of the proxy object is different from the target object. Therefore the types of all class members, method arguments and local variables intended to hold a reference to the target object must be changed to that of the proxy object, unless interfaces are used. This is not necessary for the inheritance based approach, because the proxy object class will be a subtype of the target object class. Another issue is that to use the proxy object approach, we need to control instance creation. Instances are usually created by using the new operator, which seems easy enough to intercept, but this is not necessarily true for larger projects. In projects using Spring or EJB, object instances are wired together using dependency injection and the instances are created using reflection, based on class names contained in external configuration files. Controlling instance creation in case of Spring or EJB therefore requires special support tailored to the particular framework. 3.2 Proxy methods An alternative method to implement object instance profiling is to wrap methods directly in the instrumented classes. The original methods will be renamed and called from the instrumentation code placed in methods using the original names.

6 This approach preserves object type and identity, and thus avoids most of the issues associated with using proxy objects. On the other hand, it does not provide precise control over instance instrumentation all instances are instrumented and the instrumentation code must determine at runtime whether to collect performance data for a particular instance. When instrumenting a selected class, we can either modify only the selected class, or the selected class and all the classes along the path to the root of the inheritance hierarchy. Single class modification. When instrumenting a single class only, all public or protected methods of the class have to be instrumented, i.e., including methods inherited from parent classes. If a class defines a method, it must be renamed and wrapped by the instrumentation code. If a class inherits a method from superclass, the instrumentation code has to explicitly call the superclass method. As a result, all public or protected method calls on the instrumented class instances go through the instrumentation stub and trigger collection of instance-specific performance data. Event though only a single class is modified, the instrumentation is not limited to that particular class. While parent classes are unaffected by the instrumentation, any classess derived from the instrumented class will be affected by the instrumentation sometimes only partially so, when the child class overrides a virtual method. This is an undesired side effect of inheritance and to suppress it, the instrumentation code has to check the instance type at runtime and collect performance data only for instances of the instrumented class. This can be done effectively by performing the check only once during instance creation and storing the result in a boolean variable that can be consulted by the instrumentation code on each method invocation. Instrumenting more classes in the inheritance hierarchy has one drawback, which is the accumulation of the instrumentation code from multiple classes. If an inherited method is defined in an ancestor class further in the class hierarchy, the invocation has to traverse a chain of proxy methods to reach the original code. 5 Even though only the first proxy method in the chain will collect the performance data, the traversal of the chain of proxy methods will add unnecessary overhead. Class hierarchy modification. To avoid long chains of proxy methods, we can spread the instrumentation along the class inheritance hierarchy. The idea is to create proxy methods only in classes which actually define the original methods, i.e., if a class inherits (but does not override) a method from an ancestor, the proxy method is created only in the ancestor. This helps to prune the chain of proxy methods, but we still need to check the instance type at runtime to determine whether to collect performance data. Moreover, while in the previous case the instrumentation code only needed to check the value of a boolean variable, in this case the value may need to be modified to disable performance data collection when calling an overriden method in the superclass. This is necessary to 5 Note that this is only true for some languages, e.g., Java. C++ makes it possible to call the original method directly from each proxy method.

7 avoid collecting performance data twice when a class overrides a virtual method and also calls the overriden method. 3.3 Instance identification In our instrumentation debate so far, we have assumed that performance data will be collected for all instances of the instrumented class. To allow collecting performance data from a specific instance, we need to be able to identify the instances at runtime. The most straightforward solution is to require the instances to provide a name, either in a field or as a result of method invocation. The value should be immutable even though the identification will be probably done only once when the instance is created. Another solution is to identify the instance by execution context in which the instance is created. The execution context can be obtained from a stack trace in our case, this does not incur a significant profiling overhead since it is only required once during object creation. However, this can lead to the same problems as with the proxy object interceptions. Multiple instances can be created at the same place in the code, especially when the instantiation can be driven from outside the application. 4 Related work In principle, our work could be related to many profiler projects, such as HProf [3], JFluid [4], JIP [5], JProfiler [6], JProbe [7], YourKit [8], and others. To the best of our knowledge, none of the profiler projects implements object instance profiling that, however, is probably not the most important observation to be made. A more interesting observation is that the overhead of the managed language profilers is not yet comparable with native profilers while OProfile [9] claims a typical overhead of 1-3%, JIP authors claim their profiler is extremely fast with 100% overhead, or HProf with overhead rising easily to the range of %. We believe this is one place where object instance profiling can bring an improvement. Although the profiling code is unlikely to have a significantly different overhead per observation, object instance profiling should incur this overhead less frequently than code profiling. Another topic our work has in common with many other profiler projects is the need for instrumentation. Although this need has been around for a long time, satisfactory instrumentation methods are still not available tools such as JVMTI [10] require bytecode manipulation, which is error prone and known to fail on some library classes, and frameworks such as AspectJ [11] exhibit similar problems on a higher level. Still, we believe we will be able to extend frameworks like AspectJ or InsECT [12] to intercept object instance invocations, to make them suitable for object instance profiling.

8 The analysis in Section 3 also points out that, without modifying the virtual machine internals, there might be no single way to intercept object instance invocations that would work in all situations. Unlike other profiling approaches, which (except for missing some library classes and sometimes interfering with reflection) appear to be reasonably complete, an object instance profiling tool would also have to identify situations in which the collected information is unreliable, e.g. because of reference leaking. By providing multiple interception methods, we believe we can make object instance profiling work in most practical situations. 5 Conclusion We have presented object instance profiling as a profiling method that can, compared with code profiling, achieve lower overhead and still present detailed performance information. The basic idea of the method is to intercept invocations of particular object instances, rather than particular code locations. The problem of object instance profiling is with implementation in current managed language environments, there seems to be no standard way to achieve object instance profiling. We work around the problem by designing three different interception methods with different combinations of advantages and drawbacks, aiming for a palette of methods of which some will likely be usable in any particular situation. Our work is currently in the prototyping stage the individual interception methods are being assessed in the context of a complex application case study in Java [13]. References 1. Whitehead, N.: Java run-time monitoring, Part 1: Run-time performance and availability monitoring for Java systems; page (2008) 2. Shende, S., Malony, A.D.: The TAU parallel performance system. Intl. Journal of High Performance Computing Applications 20(2) (2006) 3. Sun Microsystems, Inc.: Hprof: A heap/cpu profiling tool in J2SE (2004) 4. Sun Microsystems, Inc.: JFluid. (2003) 5. Public development: The Java interactive profiler. (2005) 6. ej-technologies GmbH: JProfiler. (2003) 7. Quest Software, Inc.: JProbe. (2003) 8. YourKit, LLC: YourKit. (2003) 9. John Levon, P.E.: OProfile. (2003) 10. Sun Microsystems, Inc.: JVM Tool Interface. (2004)

9 11. Eclipse Foundation: AspectJ. (1998) 12. Anil Chawla, A.O.: A generic instrumentation framework for collecting dynamic information. In: ACM SIGSOFT Software Engineering Notes. (2004) 13. itemis AG: Q-impress enterprise soa showcase. (2009)

Trace-Based and Sample-Based Profiling in Rational Application Developer

Trace-Based and Sample-Based Profiling in Rational Application Developer Trace-Based and Sample-Based Profiling in Rational Application Developer This document is aimed at highlighting the importance of profiling in software development and talks about the profiling tools offered

More information

Performance Tools for Parallel Java Environments

Performance Tools for Parallel Java Environments Performance Tools for Parallel Java Environments Sameer Shende and Allen D. Malony Department of Computer and Information Science, University of Oregon {sameer,malony}@cs.uoregon.edu http://www.cs.uoregon.edu/research/paracomp/tau

More information

The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1

The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1 The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose

More information

Habanero Extreme Scale Software Research Project

Habanero Extreme Scale Software Research Project Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead

More information

Does My Profiler Tell The Truth? Fabian Lange - codecentric AG

Does My Profiler Tell The Truth? Fabian Lange - codecentric AG Does My Profiler Tell The Truth? Fabian Lange - codecentric AG Profilers are Measurement Tools A fool with a tool is still a fool Grady Booch Available Tools Mission Control YourKit VisualVM AppDynamics

More information

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program

More information

Monitoring, Tracing, Debugging (Under Construction)

Monitoring, Tracing, Debugging (Under Construction) Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.

More information

Lecture Notes on Programming Languages

Lecture Notes on Programming Languages Lecture Notes on Programming Languages 1 Lecture 09: Support for Object-Oriented Programming This lecture discusses how programming languages support object-oriented programming. Topics to be covered include:

More information

Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment

Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment Wyatt Spear, Allen Malony, Alan Morris, Sameer Shende {wspear, malony, amorris, sameer}@cs.uoregon.edu

More information

Can You Trust Your JVM Diagnostic Tools?

Can You Trust Your JVM Diagnostic Tools? Can You Trust Your JVM Diagnostic Tools? Isaac Sjoblom, Tim S. Snyder, and Elena Machkasova Computer Science Discipline University of Minnesota Morris Morris, MN 56267 sjobl014@umn.edu, snyde479@umn.edu,

More information

TECHNOLOGY WHITE PAPER. Application Performance Management. Introduction to Adaptive Instrumentation with VERITAS Indepth for J2EE

TECHNOLOGY WHITE PAPER. Application Performance Management. Introduction to Adaptive Instrumentation with VERITAS Indepth for J2EE TECHNOLOGY WHITE PAPER Application Performance Management Introduction to Adaptive Instrumentation with VERITAS Indepth for J2EE TABLE OF CONTENTS ABOUT ADAPTIVE INSTRUMENTATION 3 WHY ADAPTIVE INSTRUMENTATION?

More information

Checking Access to Protected Members in the Java Virtual Machine

Checking Access to Protected Members in the Java Virtual Machine Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/

More information

System Virtual Machines

System Virtual Machines System Virtual Machines Introduction Key concepts Resource virtualization processors memory I/O devices Performance issues Applications 1 Introduction System virtual machine capable of supporting multiple

More information

Course: Introduction to Java Using Eclipse Training

Course: Introduction to Java Using Eclipse Training Course: Introduction to Java Using Eclipse Training Course Length: Duration: 5 days Course Code: WA1278 DESCRIPTION: This course introduces the Java programming language and how to develop Java applications

More information

PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design

PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions Slide 1 Outline Principles for performance oriented design Performance testing Performance tuning General

More information

Implementing Java Distributed Objects with JDBC

Implementing Java Distributed Objects with JDBC Implementing Java Distributed Objects with JDBC Pritisha 1, Aashima Arya 2 1,2 Department of Computer Science Bhagwan Mahaveer institute of engineering & technology (BMIET), Deenbandhu Chhotu Ram University

More information

Instrumentation Software Profiling

Instrumentation Software Profiling Instrumentation Software Profiling Software Profiling Instrumentation of a program so that data related to runtime performance (e.g execution time, memory usage) is gathered for one or more pieces of the

More information

Eclipse Visualization and Performance Monitoring

Eclipse Visualization and Performance Monitoring Eclipse Visualization and Performance Monitoring Chris Laffra IBM Ottawa Labs http://eclipsefaq.org/chris Chris Laffra Eclipse Visualization and Performance Monitoring Page 1 Roadmap Introduction Introspection

More information

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111 Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo

More information

NetBeans Profiler is an

NetBeans Profiler is an NetBeans Profiler Exploring the NetBeans Profiler From Installation to a Practical Profiling Example* Gregg Sporar* NetBeans Profiler is an optional feature of the NetBeans IDE. It is a powerful tool that

More information

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.

More information

Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert

Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert Ubiquitous Computing Ubiquitous Computing The Sensor Network System Sun SPOT: The Sun Small Programmable Object Technology Technology-Based Wireless Sensor Networks a Java Platform for Developing Applications

More information

Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment

Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment Nuno A. Carvalho, João Bordalo, Filipe Campos and José Pereira HASLab / INESC TEC Universidade do Minho MW4SOC 11 December

More information

Zing Vision. Answering your toughest production Java performance questions

Zing Vision. Answering your toughest production Java performance questions Zing Vision Answering your toughest production Java performance questions Outline What is Zing Vision? Where does Zing Vision fit in your Java environment? Key features How it works Using ZVRobot Q & A

More information

The Evolution of Load Testing. Why Gomez 360 o Web Load Testing Is a

The Evolution of Load Testing. Why Gomez 360 o Web Load Testing Is a Technical White Paper: WEb Load Testing To perform as intended, today s mission-critical applications rely on highly available, stable and trusted software services. Load testing ensures that those criteria

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

C Compiler Targeting the Java Virtual Machine

C Compiler Targeting the Java Virtual Machine C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the

More information

Comp215: Performance 2: Java Internals

Comp215: Performance 2: Java Internals Comp215: Performance 2: Java Internals Mack Joyner, Dan S. Wallach (Rice University) Copyright 2016, Mack Joyner, Dan S. Wallach. All rights reserved. Recall: Collision Resolution Chaining: 0 Store all

More information

A Purified Java Execution Environment for Controller Networks

A Purified Java Execution Environment for Controller Networks A Purified Java Execution Environment for Controller Networks 1 Introduction About 98 % of the over eight billions processors produced in year 2000 will be used in the embedded systems market [9]. From

More information

Thread-Safe Interface

Thread-Safe Interface 345 Thread-Safe Interface The Thread-Safe Interface design pattern minimizes locking overhead and ensures that intra-component method calls do not incur selfdeadlock by trying to reacquire a lock that

More information

Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines

Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines Operating System Concepts 3.1 Common System Components

More information

Use of profilers for studying Java dynamic optimizations

Use of profilers for studying Java dynamic optimizations Use of profilers for studying Java dynamic optimizations Kevin Arhelger, Fernando Trinciante, Elena Machkasova Computer Science Discipline University of Minnesota Morris Morris MN, 56267 arhel005@umn.edu,

More information

Replication on Virtual Machines

Replication on Virtual Machines Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism

More information

A MONITORING PLATFORM FOR DISTRIBUTED JAVA APPLICATIONS

A MONITORING PLATFORM FOR DISTRIBUTED JAVA APPLICATIONS TASKQUARTERLY8No4,525 536 A MONITORING PLATFORM FOR DISTRIBUTED JAVA APPLICATIONS WŁODZIMIERZFUNIKA 1,MARIANBUBAK 1,2, MARCINSMĘTEK 1 ANDROLANDWISMÜLLER3 1 InstituteofComputerScience,AGHUniversityofScienceandTechnology,

More information

Approaches to Reflective Method Invocation

Approaches to Reflective Method Invocation Approaches to Reflective Method Invocation Ian Rogers, Jisheng Zhao, and Ian Watson The University of Manchester, Oxford Road, Manchester, M13 9PL, United Kingdom {ian.rogers, jisheng.zhao, ian.watson@manchester.ac.uk

More information

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements Questions? Assignment Why is proper project management important? What is goal of domain analysis? What is the difference between functional and non- functional requirements? Why is it important for requirements

More information

An Easier Way for Cross-Platform Data Acquisition Application Development

An Easier Way for Cross-Platform Data Acquisition Application Development An Easier Way for Cross-Platform Data Acquisition Application Development For industrial automation and measurement system developers, software technology continues making rapid progress. Software engineers

More information

On Performance of Delegation in Java

On Performance of Delegation in Java On Performance of Delegation in Java Sebastian Götz Software Technology Group, Dresden University of Technology, Germany sebastian.goetz@mail.inf.tu-dresden.de Mario Pukall Database Research Group, Otto-von-Guericke-University

More information

Parallel Processing and Software Performance. Lukáš Marek

Parallel Processing and Software Performance. Lukáš Marek Parallel Processing and Software Performance Lukáš Marek DISTRIBUTED SYSTEMS RESEARCH GROUP http://dsrg.mff.cuni.cz CHARLES UNIVERSITY PRAGUE Faculty of Mathematics and Physics Benchmarking in parallel

More information

Optimising Cloud Computing with SBSE

Optimising Cloud Computing with SBSE Optimising Cloud Computing with SBSE David R. White & Jeremy Singer {david.r.white, jeremy.singer}@glasgow.ac.uk University of Glasgow Monday 25 July 2011 OUTLINE VIRTUAL MACHINES OPPORTUNITIES FOR SBSE

More information

Designing an Enterprise Application Framework for Service-Oriented Architecture 1

Designing an Enterprise Application Framework for Service-Oriented Architecture 1 Designing an Enterprise Application Framework for Service-Oriented Architecture 1 Shyam Kumar Doddavula, Sandeep Karamongikar Abstract This article is an attempt to present an approach for transforming

More information

Java Native Interface

Java Native Interface Java Native Interface Application Notes Da Ke 4/5/2009 ECE 480 Spring 2009, Design Team 3 Department of Electrical and Computer Engineering Michigan State University Abstract Java is one of most widely

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2002 Vol. 1, No. 3 Special issue: TOOLS USA 2002 proceedings Evaluation of Assertion Support

More information

Automated Validation & Verification of Software Paper Presentation

Automated Validation & Verification of Software Paper Presentation Regression Test Selection for Java Software Salvador Valencia Rodríguez Automated Validation & Verification of Software Paper Presentation Paper authors Mary Jean Harrold James A. Jones Tongyu Li Donglin

More information

The Microsoft Way: COM, OLE/ActiveX, COM+ and.net CLR. Chapter 15

The Microsoft Way: COM, OLE/ActiveX, COM+ and.net CLR. Chapter 15 The Microsoft Way: COM, OLE/ActiveX, COM+ and.net CLR Chapter 15 Microsoft is continually reengineering its existing application and platform base. Started with VBX, continued with OLE, ODBC, ActiveX,

More information

Object oriented programming. Lecture 13: Object orientation. Object oriented programming. Introduction. OO and ADT:s. Introduction

Object oriented programming. Lecture 13: Object orientation. Object oriented programming. Introduction. OO and ADT:s. Introduction Lecture 13: Object orientation Introduction, types of OO languages Key concepts: Encapsulation, Inheritance, Dynamic binding & polymorphism Other design issues Smalltalk OO support in C++ and Java Object

More information

Embedded Java too fat and too slow?

Embedded Java too fat and too slow? Embedded Java too fat and too slow? Abstract In software developer communities it is one of the most often discussed questions: Is Java really to fat and too slow?. For embedded devices this discussion

More information

Effective Java Programming. efficient software development

Effective Java Programming. efficient software development Effective Java Programming efficient software development Structure efficient software development what is efficiency? development process profiling during development what determines the performance of

More information

Write Barrier Removal by Static Analysis

Write Barrier Removal by Static Analysis Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, rinard@lcs.mit.edu ABSTRACT We present

More information

Running and Testing Java EE Applications in Embedded Mode with JupEEter Framework

Running and Testing Java EE Applications in Embedded Mode with JupEEter Framework JOURNAL OF APPLIED COMPUTER SCIENCE Vol. 21 No. 1 (2013), pp. 53-69 Running and Testing Java EE Applications in Embedded Mode with JupEEter Framework Marcin Kwapisz 1 1 Technical University of Lodz Faculty

More information

Chapter 3: Operating-System Structures. Common System Components

Chapter 3: Operating-System Structures. Common System Components Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines System Design and Implementation System Generation 3.1

More information

ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM

ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM Ashish Patel, Lead Eclipse Committer for ARM, IBM Corporation Oliver E. Cole, President, OC Systems, Inc. The Eclipse Test and Performance Tools

More information

GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.

GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc. GlassFish v3 Building an ex tensible modular Java EE application server Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc. Agenda Java EE 6 and GlassFish V3 Modularity, Runtime Service Based Architecture

More information

Fundamental Computer Science Concepts Sequence TCSU CSCI SEQ A

Fundamental Computer Science Concepts Sequence TCSU CSCI SEQ A Fundamental Computer Science Concepts Sequence TCSU CSCI SEQ A A. Description Introduction to the discipline of computer science; covers the material traditionally found in courses that introduce problem

More information

Deferred node-copying scheme for XQuery processors

Deferred node-copying scheme for XQuery processors Deferred node-copying scheme for XQuery processors Jan Kurš and Jan Vraný Software Engineering Group, FIT ČVUT, Kolejn 550/2, 160 00, Prague, Czech Republic kurs.jan@post.cz, jan.vrany@fit.cvut.cz Abstract.

More information

System Structures. Services Interface Structure

System Structures. Services Interface Structure System Structures Services Interface Structure Operating system services (1) Operating system services (2) Functions that are helpful to the user User interface Command line interpreter Batch interface

More information

A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler

A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler Hiroshi Inoue, Hiroshige Hayashizaki, Peng Wu and Toshio Nakatani IBM Research Tokyo IBM Research T.J. Watson Research Center April

More information

Chapter 2: Operating-System Structures

Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

Declarative Approach to Implementing Automata Classes in Imperative Programming Languages

Declarative Approach to Implementing Automata Classes in Imperative Programming Languages Declarative Approach to Implementing Automata Classes in Imperative Programming Languages Artyom Astafurov, Anatoly Shalyto (research supervisor), Fac. of Information Technologies and Programming St. Petersburg

More information

2015 ej-technologies GmbH. All rights reserved. JProfiler Manual

2015 ej-technologies GmbH. All rights reserved. JProfiler Manual 2015 ej-technologies GmbH. All rights reserved. JProfiler Manual Index JProfiler help... 8 How to order... 9 A Help topics... 10 A.1 Profiling... 10 A.1.1 Profiling modes... 10 A.1.2 Remote profiling...

More information

Memory management. The memory manager. Explicit deallocation. Advanced Compiler Construction Michel Schinz

Memory management. The memory manager. Explicit deallocation. Advanced Compiler Construction Michel Schinz Memory management Memory management Advanced Compiler Construction Michel Schinz 2014 04 10 The memory of a computer is a finite resource. Typical programs use a lot of memory over their lifetime, but

More information

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts

More information

How accurately do Java profilers predict runtime performance bottlenecks?

How accurately do Java profilers predict runtime performance bottlenecks? How accurately do Java profilers predict runtime performance bottlenecks? Master Software Engineering How accurately do Java profilers predict runtime performance bottlenecks? Peter Klijn: Student number

More information

Terms and Definitions for CMS Administrators, Architects, and Developers

Terms and Definitions for CMS Administrators, Architects, and Developers Sitecore CMS 6 Glossary Rev. 081028 Sitecore CMS 6 Glossary Terms and Definitions for CMS Administrators, Architects, and Developers Table of Contents Chapter 1 Introduction... 3 1.1 Glossary... 4 Page

More information

Monitoring applications in multitier environment. Uroš Majcen uros@quest-slo.com. A New View on Application Management. www.quest.

Monitoring applications in multitier environment. Uroš Majcen uros@quest-slo.com. A New View on Application Management. www.quest. A New View on Application Management www.quest.com/newview Monitoring applications in multitier environment Uroš Majcen uros@quest-slo.com 2008 Quest Software, Inc. ALL RIGHTS RESERVED. Management Challenges

More information

Fundamentals of Java Programming

Fundamentals of Java Programming Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors

More information

Reference Monitors. CSM27 Computer Security. Dr Hans Georg Schaathun. University of Surrey. Autumn 2009 Week 6

Reference Monitors. CSM27 Computer Security. Dr Hans Georg Schaathun. University of Surrey. Autumn 2009 Week 6 Reference Monitors CSM27 Computer Security Dr Hans Georg Schaathun University of Surrey Autumn 2009 Week 6 Dr Hans Georg Schaathun Reference Monitors Autumn 2009 Week 6 1 / 36 The session Session objectives

More information

A Survey of Object Oriented Programming Languages

A Survey of Object Oriented Programming Languages A Survey of Object Oriented Programming Languages Maya Hristakeva, RadhaKrishna Vuppala Univ. of California, Santa Cruz {mayah,vrk}@soe.ucsc.edu 1 Abstract Object-oriented programming has become a very

More information

Profiling and Testing with Test and Performance Tools Platform (TPTP)

Profiling and Testing with Test and Performance Tools Platform (TPTP) Profiling and Testing with Test and Performance Tools Platform (TPTP) 2009 IBM Corporation and Intel Corporation; made available under the EPL v1.0 March, 2009 Speakers Eugene Chan IBM Canada ewchan@ca.ibm.com

More information

Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding

Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects

More information

A Practical Method to Diagnose Memory Leaks in Java Application Alan Yu

A Practical Method to Diagnose Memory Leaks in Java Application Alan Yu A Practical Method to Diagnose Memory Leaks in Java Application Alan Yu 1. Introduction The Java virtual machine s heap stores all objects created by a running Java application. Objects are created by

More information

Example of Standard API

Example of Standard API 16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface

More information

JVM Tool Interface. Michal Pokorný

JVM Tool Interface. Michal Pokorný JVM Tool Interface Michal Pokorný JVM TI Inspect & control execution on JVM (profiling, debugging, monitoring, thread analysis, coverage, ) Higher-level interface: Java Platform Debugger Architecture JVM

More information

Load balancing using Remote Method Invocation (JAVA RMI)

Load balancing using Remote Method Invocation (JAVA RMI) Load balancing using Remote Method Invocation (JAVA RMI) Ms. N. D. Rahatgaonkar 1, Prof. Mr. P. A. Tijare 2 1 Department of Computer Science & Engg and Information Technology Sipna s College of Engg &

More information

A Flexible Security Architecture for the EJB Framework

A Flexible Security Architecture for the EJB Framework A Flexible Security Architecture for the EJB Framework Frank Kohmann¹, Michael Weber², Achim Botz¹ ¹ TPS Labs AG, Balanstr 49, D-81541 München {frank.kohmann achim.botz}@tps-labs.com ² Abteilung Verteilte

More information

Practical Performance Understanding the Performance of Your Application

Practical Performance Understanding the Performance of Your Application Neil Masson IBM Java Service Technical Lead 25 th September 2012 Practical Performance Understanding the Performance of Your Application 1 WebSphere User Group: Practical Performance Understand the Performance

More information

Performance Measurement of Dynamically Compiled Java Executions

Performance Measurement of Dynamically Compiled Java Executions Performance Measurement of Dynamically Compiled Java Executions Tia Newhall and Barton P. Miller University of Wisconsin Madison Madison, WI 53706-1685 USA +1 (608) 262-1204 {newhall,bart}@cs.wisc.edu

More information

Object Oriented Programming (Interview Questions & Answers)

Object Oriented Programming (Interview Questions & Answers) Object Oriented Programming (Interview Questions & Answers) Collected from different websites. Use for non-commercial purpose. Sohail Basheer Lecturer- Computer Science (visiting) Department of Computer

More information

A STATISTICAL APPROACH FOR IDENTIFYING MEMORY LEAKS IN CLOUD APPLICATIONS

A STATISTICAL APPROACH FOR IDENTIFYING MEMORY LEAKS IN CLOUD APPLICATIONS A STATISTICAL APPROACH FOR IDENTIFYING MEMORY LEAKS IN CLOUD APPLICATIONS Vladimir Šor and Satish Narayana Srirama Institute of Computer Science, University of Tartu, J. Liivi 2, Tartu, Estonia {volli,

More information

BPM Scheduling with Job Scheduler

BPM Scheduling with Job Scheduler Document: BPM Scheduling with Job Scheduler Author: Neil Kolban Date: 2009-03-26 Version: 0.1 BPM Scheduling with Job Scheduler On occasion it may be desired to start BPM processes at configured times

More information

WebSphere v5 Administration, Network Deployment Edition

WebSphere v5 Administration, Network Deployment Edition WebSphere v5 Administration, Network Deployment Edition Loading Java Classes Web Age Solutions, Inc. 2003 6-32 Class Loader A class loader is a Java class that loads compiled Java byte code of other classes.

More information

Python, C++ and SWIG

Python, C++ and SWIG Robin Dunn Software Craftsman O Reilly Open Source Convention July 21 25, 2008 Slides available at http://wxpython.org/oscon2008/ Python & C++ Comparisons Each is a general purpose programming language,

More information

Siebel Application Deployment Manager Guide. Siebel Innovation Pack 2013 Version 8.1/8.2 September 2013

Siebel Application Deployment Manager Guide. Siebel Innovation Pack 2013 Version 8.1/8.2 September 2013 Siebel Application Deployment Manager Guide Siebel Innovation Pack 2013 Version 8.1/8.2 September 2013 Copyright 2005, 2013 Oracle and/or its affiliates. All rights reserved. This software and related

More information

The Design of the Inferno Virtual Machine. Introduction

The Design of the Inferno Virtual Machine. Introduction The Design of the Inferno Virtual Machine Phil Winterbottom Rob Pike Bell Labs, Lucent Technologies {philw, rob}@plan9.bell-labs.com http://www.lucent.com/inferno Introduction Virtual Machine are topical

More information

Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825. Inheritance Depth as a Cost Factor in Maintenance

Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825. Inheritance Depth as a Cost Factor in Maintenance Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Why is Inheritance Important? A Controlled Experiment on Inheritance Depth as a Cost Factor in Maintenance Walter F. Tichy University of

More information

A Framework for Automatic Performance Monitoring, Analysis and Optimisation of Component Based Software Systems

A Framework for Automatic Performance Monitoring, Analysis and Optimisation of Component Based Software Systems A Framework for Automatic Performance Monitoring, Analysis and Optimisation of Component Based Software Systems Ada Diaconescu *, John Murphy ** Performance Engineering Laboratory Dublin City University,

More information

Huazhong University of Science and Technology JAVA Programming Language Lecture 1:Introduction

Huazhong University of Science and Technology JAVA Programming Language Lecture 1:Introduction JAVA Programming Language Lecture 1:Introduction Chengwei Zhang ( 张成伟 ) School of Electronic Information and Communications Huazhong University of Science and Technology Mar. 2015 Instructor Chengwei Zhang(

More information

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive

More information

Lecture 1 Introduction to Android

Lecture 1 Introduction to Android These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy

More information

An innovative, open-standards solution for Konnex interoperability with other domotic middlewares

An innovative, open-standards solution for Konnex interoperability with other domotic middlewares An innovative, open-standards solution for Konnex interoperability with other domotic middlewares Vittorio Miori, Luca Tarrini, Maurizio Manca, Gabriele Tolomei Italian National Research Council (C.N.R.),

More information

Validating Java for Safety-Critical Applications

Validating Java for Safety-Critical Applications Validating Java for Safety-Critical Applications Jean-Marie Dautelle * Raytheon Company, Marlborough, MA, 01752 With the real-time extensions, Java can now be used for safety critical systems. It is therefore

More information

Chapter 1 Fundamentals of Java Programming

Chapter 1 Fundamentals of Java Programming Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The

More information

IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM

IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM Note Before you use this information and the product it supports, read the

More information

Object Oriented Design

Object Oriented Design Object Oriented Design Kenneth M. Anderson Lecture 20 CSCI 5828: Foundations of Software Engineering OO Design 1 Object-Oriented Design Traditional procedural systems separate data and procedures, and

More information

Evaluation of Alternative Instrumentation Frameworks

Evaluation of Alternative Instrumentation Frameworks Evaluation of Alternative Instrumentation Frameworks Dušan Okanović, Milan Vidaković Faculty of Technical Sciences University of Novi Sad Fruškogorska 11 Novi Sad, Serbia oki@uns.ac.rs minja@uns.ac.rs

More information

Tool - 1: Health Center

Tool - 1: Health Center Tool - 1: Health Center Joseph Amrith Raj http://facebook.com/webspherelibrary 2 Tool - 1: Health Center Table of Contents WebSphere Application Server Troubleshooting... Error! Bookmark not defined. About

More information

Simple Solution for a Location Service. Naming vs. Locating Entities. Forwarding Pointers (2) Forwarding Pointers (1)

Simple Solution for a Location Service. Naming vs. Locating Entities. Forwarding Pointers (2) Forwarding Pointers (1) Naming vs. Locating Entities Till now: resources with fixed locations (hierarchical, caching,...) Problem: some entity may change its location frequently Simple solution: record aliases for the new address

More information

8 Related Work. 8.1 Earlier View Concepts

8 Related Work. 8.1 Earlier View Concepts This chapter compares the view based approach to access control with the most closely related work. Section 8.1 compares the concept of views as defined in this thesis with earlier definitions of the same

More information

MCI-Java: A Modified Java Virtual Machine Approach to Multiple Code Inheritance

MCI-Java: A Modified Java Virtual Machine Approach to Multiple Code Inheritance This is pre-print of a paper that will appear in the Proceedings of: 3 rd Virtual Machine Research & Technology Symposium Usenix VM 4, May 6-7, 24, San Jose, alifornia. MI-Java: Modified Java Virtual Machine

More information

One motivation for having trusted code is that software development has migrated to a

One motivation for having trusted code is that software development has migrated to a 1 One problem that is not addressed by firewalls, secure communications, and by the operating system itself is: what safeguards can we impose when we want to run someone else s software? The general model

More information