Professional Documents
Culture Documents
BEA-JRockit
Sebastian Steinhauer
Content
Why BEA-JRockit seems to be interesting?
What is a Java platform
Components of a Java platform
JBC Assembler for JVM
BEA - JRockit
Just-in-time compilation
Garbage Collection
Wrap-up
Sources
HPI, Seminar System Modeling - SS2005 / 2
SPECjbb2000
105296 ops/s (BEA, PowerEdge 6650)
103371 ops/s (IBM, xSeries x346 )
SPECjbb2000
105296 ops/s (BEA, PowerEdge 6650)
103371 ops/s (IBM, xSeries x346 )
SPECjbb2000
105296 ops/s (BEA, PowerEdge 6650)
103371 ops/s (IBM, xSeries x346 )
SPECjbb2000
105296 ops/s (BEA, PowerEdge 6650)
103371 ops/s (IBM, xSeries x346 )
SPECjbb2000
105296 ops/s (BEA, PowerEdge 6650)
103371 ops/s (IBM, xSeries x346 )
Sebastian Steinhauer
Profiler
Classlibs
Java API
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
JVM
b= a+ c*d ;
Profiler
Classlibs
Java API
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
JVM
b= a+ c*d ;
0x15 (21)
x00 (0)
0x15 (21)
0x02 (2)
0x15 (21)
0x04 (3)
Profiler
Classlibs
Java API
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
JVM
0x68 (104)
0x60 (96)
0x36 (54)
0x01 (1)
b= a+ c*d ;
0x15 (21)
x00 (0)
0x15 (21)
0x02 (2)
0x15 (21)
0x04 (3)
Profiler
Classlibs
Java API
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
OpCode
JVM
0x68 (104)
0x60 (96)
0x36 (54)
0x01 (1)
b= a+ c*d ;
Profiler
Classlibs
Java API
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
Mnemonics
OpCode
iload a
0x15 (21)
x00 (0)
0
15 (21)
0x15
0x02 (2)
0x15 (21)
0x04 (3)
JVM
0x68 (104)
0x60 (96)
0x36 (54)
0x01 (1)
b= a+ c*d ;
Profiler
javac
Java Byte
Code
Java
Source
Code
IDE
OpCode
iload a
0x15 (21)
x00 (0)
0 15 (21)
0x15
0x02 (2)
0x15
0
15 (21)
0x04 (3)
iload c
Classlibs
Java API
Developer
Mnemonics
Debugger
CodeDocu
JavaDoc
JVM
0x68 (104)
0x60 (96)
0x36 (54)
0x01 (1)
b= a+ c*d ;
Profiler
Mnemonics
OpCode
iload a
0x15 (21)
x00 (0)
0 15 (21)
0x15
0x02 (2)
0 15 (21)
0x15
0x04 (3)
iload c
Classlibs
Java API
iload d
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
JVM
0x68 (104)
0x60 (96)
0x36 (54)
0x01 (1)
b= a+ c*d ;
Profiler
Mnemonics
OpCode
iload a
0x15 (21)
x00 (0)
0 15 (21)
0x15
0x02 (2)
0 15 (21)
0x15
0x04 (3)
iload c
Classlibs
Java API
iload d
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
JVM
imul
0x68 (104)
0x60 (96)
0x36 (54)
0x01 (1)
b= a+ c*d ;
Profiler
Mnemonics
OpCode
iload a
0x15 (21)
x00 (0)
0 15 (21)
0x15
0x02 (2)
0 15 (21)
0x15
0x04 (3)
iload c
Classlibs
Java API
iload d
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
JVM
imul
iadd
0x68 (104)
0x60 (96)
0x36 (54)
0x01 (1)
b= a+ c*d ;
Profiler
Mnemonics
OpCode
iload a
0x15 (21)
x00 (0)
0 15 (21)
0x15
0x02 (2)
0 15 (21)
0x15
0x04 (3)
iload c
Classlibs
Java API
iload d
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
JVM
imul
iadd
0x68 (104)
0x60 (96)
istore b
0x36 (54)
0x01 (1)
b= a+ c*d ;
Profiler
Mnemonics
OpCode
iload a
0x15 (21)
x00 (0)
0 15 (21)
0x15
0x02 (2)
0 15 (21)
0x15
0x04 (3)
iload c
Classlibs
Java API
iload d
javac
Java Byte
Code
Java
Source
Code
Developer
IDE
Debugger
CodeDocu
JavaDoc
JVM
imul
iadd
0x68 (104)
0x60 (96)
istore b
0x36 (54)
0x01 (1)
Sebastian Steinhauer
Thread
Frame
Pointer
OnTop
Op.Stack
PC
Vars
Pointer
Heap
JITC
Native Methods
Stack
Const. Pool
Name
Resolver
Control Unit
Method . Area
Locals
Operands
Stack
Native
Byte Code Processor
Frame
JBC
Frame
Frame
ALU
I/O (OS)
Thread Controller
Operands Stack
Control Unit
d
c
b
a
Frame
Frame
Frame
ALU
b=a+c*d;
Locals
Operands Stack
Control Unit
d
c
b
a
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
Locals
Operands Stack
Control Unit
d
c
b
a
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
Locals
Operands Stack
Control Unit
d
c
b
a
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
iload d
Locals
Operands Stack
Control Unit
d
c
b
a
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
iload d
imul
Locals
Operands Stack
Control Unit
d
c
b
a
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
iload d
imul
Locals
Operands Stack
Control Unit
d
c
b
a
iadd
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
iload d
imul
Locals
Operands Stack
Control Unit
d
c
b
a
iadd
istore b
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
iload d
imul
Locals
Operands Stack
Control Unit
d
c
b
a
iadd
istore b
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
iload d
imul
Locals
Operands Stack
Control Unit
d
c
b
iadd
istore b
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
iload d
imul
Locals
Operands Stack
Control Unit
d
c
iadd
istore b
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
iload d
imul
Locals
Operands Stack
Control Unit
d
c
c*d
c
iadd
istore b
Frame
Frame
Frame
ALU
b=a+c*d;
iload a
iload c
iload d
imul
Locals
Operands Stack
Control Unit
d
c
c*d
c
c*d+a
a
iadd
istore b
Frame
Frame
Frame
ALU
Principals of JVM
Sebastian Steinhauer
1000x ops/s
[ETHZ]
1000x ops/s
iload a
iload c
iload d
imul
iadd
istore b
1000x ops/s
iload a
PUSH EAX
MOV EAX,a
iload c
PUSH EAX
MOV EAX,c
iload d
PUSH EAX
MOV EAX,d
imul
POP EBX
IMUL EBX
iadd
POP EBX
ADD EAX,EBX
istore b
MOVE b,EAX
POP EAX
1000x ops/s
iload a
PUSH EAX
MOV EAX,a
MOV EAX,a
iload c
PUSH EAX
MOV EAX,c
MOV EBX,c
iload d
PUSH EAX
MOV EAX,d
MOV ECX,d
imul
POP EBX
IMUL EBX
IMUL EBX,ECX
iadd
POP EBX
ADD EAX,EBX
ADD EAX,EBX
istore b
MOVE b,EAX
POP EAX
MOVE b,EAX
1000x ops/s
iload a
PUSH EAX
MOV EAX,a
MOV EAX,a
iload c
PUSH EAX
MOV EAX,c
MOV EBX,c
iload d
PUSH EAX
MOV EAX,d
MOV ECX,d
imul
POP EBX
IMUL EBX
IMUL EBX,ECX
iadd
POP EBX
ADD EAX,EBX
ADD EAX,EBX
istore b
MOVE b,EAX
POP EAX
MOVE b,EAX
[ETHZ]
iload a
PUSH EAX
MOV EAX,a
MOV EAX,a
iload c
PUSH EAX
MOV EAX,c
MOV EBX,c
iload d
PUSH EAX
MOV EAX,d
MOV ECX,d
imul
POP EBX
IMUL EBX
IMUL EBX,ECX
iadd
POP EBX
ADD EAX,EBX
ADD EAX,EBX
Pro
Platform
independency
istore b
MOVE b,EAX
Performance
POP EAX
Platformcharacteristics
HPI, Seminar System Modeling - SS2005 / 11
MOVE b,EAX
[ETHZ]
iload a
PUSH EAX
MOV EAX,a
MOV EAX,a
iload c
PUSH EAX
MOV EAX,c
MOV EBX,c
iload d
PUSH EAX
MOV EAX,d
MOV ECX,d
imul
POP EBX
IMUL EBX
IMUL EBX,ECX
iadd
POP EBX
ADD EAX,EBX
ADD EAX,EBX
Pro
Platform
independency
istore b
MOVE b,EAX
Performance
POP EAX
Platformcharacteristics
HPI, Seminar System Modeling - SS2005 / 11
Contra
Single use compilation
Fast, suboptimal compilation
Recompiling (every run)
MOVE b,EAX
Thread
Registers
Obj.3 Obj.
Locals
Operands
Stack
Obj.1
Heap
Obj.2
Native Methods
Stack
Obj.
Ref.
0
Obj.
Byte Code
Processor
Const. Pool
Frame
Frame
Frame
Method . Area
Native
JBC
Thread Controller
Thread
Registers
Obj.3 Obj.
Locals
Operands
Stack
Obj.1
Obj.
Ref.
2
Heap
Obj.2
Native Methods
Stack
Obj.
Ref.
0
Obj.
Byte Code
Processor
Const. Pool
Frame
Frame
Frame
Method . Area
Native
JBC
Thread Controller
Thread
Registers
Operands
Stack
Obj.1
Obj.
Ref.
2
Heap
Obj.2
Native Methods
Stack
Obj.
Ref.
0
Obj.
Byte Code
Processor
Const. Pool
Frame
Frame
Frame
Method . Area
Native
JBC
Thread Controller
Thread
Registers
Operands
Stack
Obj.1
Obj.
Ref.
2
Heap
Obj.2
Native Methods
Stack
Obj.
Ref.
0
Obj.
Byte Code
Processor
Const. Pool
Frame
Frame
Frame
Method . Area
Native
JBC
Thread Controller
Thread
Registers
Operands
Stack
Obj.1
Obj.
Ref.
2
Heap
Obj.4
Obj.2
Native Methods
Stack
Obj.
Ref.
0
Obj.
Byte Code
Processor
Const. Pool
Frame
Frame
Frame
Method . Area
Native
JBC
Thread Controller
Thread
Registers
Operands
Stack
Obj.1
Obj.
Ref.
2
Heap
Obj.4
Obj.2
Native Methods
Stack
Obj.
Ref.
0
Obj.
Byte Code
Processor
Const. Pool
Frame
Frame
Frame
Method . Area
Native
JBC
Thread Controller
Thread
Registers
Operands
Stack
Obj.1
Obj.
Ref.
2
Heap
Obj.4
Obj.2
Native Methods
Stack
Obj.
Ref.
0
Obj.
Obj.
Byte Code
Processor
Const. Pool
Frame
Frame
Frame
Method . Area
Native
JBC
Thread Controller
Thread
Registers
Operands
Stack
Obj.1
Obj.
Ref.
2
Heap
Obj.4
Obj.2
Native Methods
Stack
Obj.
Ref.
0
Obj.
Obj.
Byte Code
Processor
Const. Pool
Frame
Frame
Frame
Method . Area
Native
JBC
Thread Controller
BEA-JRockit
Sebastian Steinhauer
[BEA]
[BEA]
Native threads
experimental feature
well known
scheduled by OS
4 different implementations
parallel garbage collection
generational garbage collection
single spaced garbage collection
concurrent garbage collection
Wrap-up
Platform independency by intermediate byte code
Bytecode processing via interpretation and JIT compiling
dynamic code replacement
progressive optimization
Scalability
Powerfull IDE/JRE
Server JVM
References
http://www.intel.com/cd/ids/developer/asmo-na/eng/198984.htm?page=1
Stand: 2005-04-28
http://www.bea.com/framework.jsp?CNT=features.htm
Stand: 2005-04-28
http://www.jboss.com/products/jbossas
Stand: 2005-04-28
http://www.spec.org/jbb2000/results/res2005q1/
Stand: 2005-04-28
Selecting and Running a Thread System, BEA Systems Inc.
Selecting and Running an Memory Managment System, BEA Systems Inc.
BEA-JRockit: Java for the Enterprise, BEA Systems Inc.
BEA Weblogic JRockit, BEA Systems Inc.
Die virtuelle Java Maschine, Linux-Magazin, 1997/06
Javas garbage-collected heap, Java World, 1996/08
JVM Performance Analysis, ETHZ, WS 1999/2000
Kompilation, JIT-Kompilation, FH-WEDEL, WS 2002
The Java Virtual Maschine Specification Second Edition,
Sun Microsystems Inc.
Sebastian Steinhauer