Oracle Database Java Application Performance
You can enhance the performance of your Java application using the following:
Oracle JVM Just-in-Time Compiler (JIT)
Java Memory Usage
Oracle JVM Just-in-Time Compiler (JIT)
This section describes the just-in-time (JIT) compiler that has been introduced since Oracle Database 11g release 1 (11.1). This section covers the following topics:
Overview of Oracle JVM JIT
Advantages of JIT Compilation
Methods Introduced in Oracle Database 11g
Note:
The JIT compiler is a replacement of the compilers that were used in the earlier versions of Oracle Database.
Overview of Oracle JVM JIT
Starting with Oracle 11g release 1 (11.1), there is a just-in-time (JIT) compiler for Oracle JVM environment. A JIT compiler for Oracle JVM enables much faster execution because, it manages the invalidation, recompilation, and storage of code without an external mechanism. Based on dynamically gathered profiling data, this compiler transparently selects Java methods to compile the native computer code and dynamically makes them available to running Java sessions. Additionally, the compiler can take advantage of the class resolution model of Oracle JVM to optionally persist compiled Java methods across database calls, sessions, or instances. Such persistence avoids the overhead of unnecessary recompilations across sessions or instances, when it is known that semantically the Java code has not changed.
The JIT compiler is controlled by a new boolean-valued initialization parameter called java_jit_enabled. When running heavily used Java methods with java_jit_enabled parameter value as true, the Java methods are automatically compiled to native code by the JIT compiler and made available for use by all sessions in the instance. Setting the java_jit_enabled parameter to true also causes further JIT compilation to cease, and reverts any already compiled methods to be interpreted. The VM automatically recompiles native code for Java methods when necessary, such as following reresolution of the containing Java class.
The JIT compiler runs as an MMON slave, in a single background process for the instance. So, while the JIT compiler is running and actively compiling methods, you may see this background process consuming CPU and memory resources on par with an active user Java session.
Advantages of JIT Compilation
The following are the advantages of using JIT compilation over the compilation techniques used in earlier versions of Oracle database:
JIT compilation works transparently
JIT compilation speeds up the performance of Java classes
JIT stored compiled code avoids recompilation of Java programs across sessions or instances when it is known that semantically the Java code has not changed.
JIT compilation does not require a C compiler
JIT compilation eliminates some of the array bounds checking
JIT compilation eliminates common sub-expressions within blocks
JIT compilation eliminates empty methods
JIT compilation defines the region for register allocation of local variables
JIT compilation eliminates the need of flow analysis
JIT compilation limits inline code
Methods Introduced in Oracle Database 11g
Since 11g release 1 (11.1), the DBMS_JAVA package has been enhanced with the following new public methods to provide Java entrypoints for controlling synchronous method compilation and reverting to interpreted method execution:
set_native_compiler_option
This procedure sets a native-compiler option to the specified value for the current schema. If the option given by optionName is not allowed to have duplicate values, then the value is ignored.
PROCEDURE set_native_compiler_option(optionName VARCHAR2,
value VARCHAR2);
unset_native_compiler_option
This procedure unsets a native-compiler option/value pair for the current schema. If the option given by optionName is not allowed to have duplicate values, then the value is ignored.
PROCEDURE unset_native_compiler_option(optionName VARCHAR2,
value VARCHAR2);
compile_class
This function compiles all methods defined by the class that is identified by classname in the current schema. It returns the number of methods successfully compiled. If the class does not exist, then an ORA-29532 (Uncaught Java exception) occurs.
FUNCTION compile_class(classname VARCHAR2) return NUMBER;
uncompile_class
This function uncompiles all methods defined by the class that is identified by classname in the current schema. It returns the number of methods successfully uncompiled. If the value of the argument permanentp is nonzero, then mark these methods as permanently dynamically uncompilable. Otherwise, they are eligible for future dynamic recompilation. If the class does not exist, then an ORA-29532 (Uncaught Java exception) occurs.
FUNCTION uncompile_class(classname VARCHAR2,
permanentp NUMBER default 0) return NUMBER;
compile_method
This function compiles the method specified by
Oracle 데이터베이스 Java 응용 프로그램 성능다음을 사용 하 여 Java 응용 프로그램의 성능을 향상 시킬 수 있습니다. Oracle JVM 저스트-인-타임 컴파일러 (JIT) 자바 메모리 사용Oracle JVM 저스트-인-타임 컴파일러 (JIT)오라클 데이터베이스 11g 릴리스 1 (11. 1) 이후 도입 되었습니다 저스트-인-타임 (JIT) 컴파일러에 설명 합니다. 이 섹션에서는 다음 내용을 다룹니다. 오라클 JVM JIT의 개요 JIT 컴파일의 장점 Oracle에서 도입 하는 방법 데이터베이스 11 g참고:JIT 컴파일러는 오라클 데이터베이스의 이전 버전에 사용 된 컴파일러의 보충 이다.오라클 JVM JIT의 개요Oracle JVM 환경에 저스트-인-타임 (JIT) 컴파일러가 있다 Oracle 11g 릴리스 1 (11. 1)에서 시작 해 서. Oracle JVM에 대 한 JIT 컴파일러 무효화, 재컴파일, 및 외부 메커니즘 없이 코드의 저장 관리 하기 때문에 훨씬 더 빠른 실행을 수 있습니다. 동적으로 수집 된 프로 파일링 데이터를 바탕으로,이 컴파일러 네이티브 컴퓨터 코드를 컴파일하려면 자바 메서드를 선택 하 고 동적으로 그들이 Java 세션 실행 수 합니다. 또한, 컴파일러를 선택적으로 데이터베이스 호출, 세션, 또는 인스턴스 컴파일된 Java 메서드 오라클 JVM의 클래스 해상도 모델의 장점은 걸릴 수 있습니다. 그것은 알려져 그 의미가 Java 코드가 변경 되지 않은 경우 이러한 지 속성 세션 또는 인스턴스, 불필요 한 컴파일 오버 헤드를 방지 합니다.JIT 컴파일러는 java_jit_enabled 라는 새로운 부울 값 초기화 매개 변수에 의해 제어 됩니다. 무 겁 게 실행 사용 하면 Java 메서드 java_jit_enabled 매개 변수 값 true로, Java 메서드는 자동으로 네이티브 코드로 JIT 컴파일러에 의해 컴파일된 고 인스턴스의 모든 세션에서 사용 가능. Java_jit_enabled 매개 변수 또한 true로 설정 하면 추가 중단, JIT 컴파일 해석 이미 컴파일된 메서드를 되돌립니다. VM은 자동으로 Java 메서드는 포함 하는 Java 클래스의 다음 reresolution 등 필요한 경우에 대 한 네이티브 코드를 재컴파일합니다.JIT 컴파일러는 인스턴스에 대 한 단일 백그라운드 프로세스에서 공통 슬레이브로 실행 됩니다. 그래서, JIT 컴파일러 실행 방법을 적극적으로 컴파일 동안이 배경 처리는 활성 사용자 자바 세션 파 소모 CPU 및 메모리 리소스를 볼 수 있습니다.JIT 컴파일의 장점다음은 오라클 데이터베이스의 이전 버전에서 사용 하는 컴파일 기술을 JIT 컴파일 사용의 장점: JIT 컴파일 투명 하 게 작동 JIT 컴파일 자바 클래스의 성능 최대 속도 저장 하는 JIT 컴파일된 코드 세션 또는 인스턴스 때 그것 알려져 그 의미가 Java 코드가 변경 되지 않은 Java 프로그램의 재컴파일 방지. JIT 컴파일 C 컴파일러를 요구 하지 않습니다. JIT 컴파일 일부 배열 범위 검사 제거 JIT 컴파일 블록 내에서 공통 하위 식 제거 JIT 컴파일 제거 빈 메서드 JIT 컴파일 지역 변수의 레지스터 할당에 대 한 영역을 정의합니다. JIT 컴파일 흐름 분석의 필요성을 제거 JIT 컴파일 인라인 코드 제한Oracle에서 도입 하는 방법 데이터베이스 11 g11 g 이후 릴리스 1 (11. 1), DBMS_JAVA 패키지 동기 메서드 컴파일 제어 및 해석된 방법 실행을 위한 자바 진입점을 제공 하는 다음 새로운 공용 메서드 향상 되었습니다.set_native_compiler_option이 프로시저는 현재 스키마에 지정된 된 값을 기본 컴파일러 옵션을 설정합니다. OptionName 제공한 옵션 중복 값이 허용 되지 않습니다, 다음 값은 무시 됩니다.프로시저 set_native_compiler_option (optionName VARCHAR2,값 VARCHAR2);unset_native_compiler_option이 절차는 현재 스키마에 대 한 네이티브 컴파일러 옵션/값 쌍 unsets. OptionName 제공한 옵션 중복 값이 허용 되지 않습니다, 다음 값은 무시 됩니다.프로시저 unset_native_compiler_option (optionName VARCHAR2,값 VARCHAR2);compile_class이 함수는 현재 스키마에서 클래스 이름으로 식별 되는 클래스에 의해 정의 된 모든 메서드를 컴파일합니다. 그것은 성공적으로 컴파일 하는 방법의 수를 반환 합니다. 클래스는 존재 하지 않는 경우는 오 라-29532 (Uncaught Java 예외) 발생 합니다.함수 compile_class(classname VARCHAR2) 반환 번호;uncompile_class이 함수는 현재 스키마에서 클래스 이름으로 식별 되는 클래스에 의해 정의 된 모든 메서드를 uncompiles. 그것은 성공적으로 uncompiled 방법의 수를 반환 합니다. 인수 permanentp의 값이 0이 아니면, 다음 영구적으로 동적으로 이러한 방법을 uncompilable 표시 합니다. 그렇지 않으면, 그들은 미래의 동적 재컴파일 받을 수 있습니다. 클래스는 존재 하지 않는 경우는 오 라-29532 (Uncaught Java 예외) 발생 합니다.기능 uncompile_class (classname VARCHAR2,permanentp 번호 0 기본) 반환 번호;compile_method이 함수에서는 지정 하는 방법
번역되고, 잠시 기다려주십시오..

오라클 데이터베이스 자바 애플리케이션 성능
당신은 사용하여 Java 응용 프로그램의 성능을 향상시킬 수있는 다음과 같은 :
오라클 JVM 그냥 인 타임 컴파일러 (JIT)
자바 메모리 사용
오라클 JVM 그냥 인 타임 컴파일러 (JIT)
이 섹션은 단지 인 설명 오라클 데이터베이스 11g 릴리스 1 (11.1) 이후 도입 된 -time (JIT) 컴파일러. 이 절은 다음 내용으로
오라클 JVM의 JIT의 개요
JIT 컴파일의 장점
오라클 데이터베이스 11g의에 도입 방법
참고 :
. JIT 컴파일러는 오라클 데이터베이스의 이전 버전에서 사용 된 컴파일러의 대체
오라클 JVM의 JIT의 개요
시작 오라클 11g 릴리스 1 (11.1)와 오라클 JVM 환경에 적시 (JIT) 컴파일러가있다. 그것은 외부 장치없이 코드의 무효화, 재 컴파일 및 스토리지를 관리하기 때문에 오라클 JVM을위한 JIT 컴파일러는 훨씬 빠르게 실행 할 수 있습니다. 동적으로 수집 된 프로파일 링 데이터에 의하면,이 컴파일러는 투명 기본 컴퓨터 코드를 컴파일하려면 자바 방법을 선택하고 동적으로 자바 세션을 실행하는 그들을 사용할 수 있습니다. 또한, 컴파일러는 데이터베이스 호출, 세션, 또는 인스턴스에서 계속 컴파일 된 Java 메소드를 선택적으로 오라클 JVM의 클래스 해상도 모델을 활용할 수 있습니다. 이러한 지속성이 의미 자바 코드가 변경되지 않았 음. 알려진 경우, 세션 또는 인스턴스에서 불필요한 재 컴파일의 오버 헤드를 방지
JIT 컴파일러가 java_jit_enabled라는 새로운 부울 값 초기화 매개 변수에 의해 제어됩니다. 참으로 java_jit_enabled 매개 변수 값으로 많이 사용되는 자바 메소드를 실행하는 경우, Java 메소드가 자동으로 JIT 컴파일러에 의해 네이티브 코드로 컴파일하고 인스턴스의 모든 세션에서 사용할 사용할 수 있습니다. true로 java_jit_enabled 매개 변수를 설정하면 중지 할 더 JIT 컴파일을 야기하고 이미 컴파일 방법을 해석 돌아갑니다. VM는, 자동적으로 포함하는 Java 클래스의 reresolution을 다음과 같이 필요한 자바 방법에 대한 기본 코드를 재 컴파일합니다.
JIT 컴파일러는 예를 들어 하나의 백그라운드 프로세스에서, MMON 슬레이브로 실행됩니다. JIT 컴파일러가 실행하고 적극적으로 방법을 컴파일하는 동안 그래서, 당신은 활성 사용자 자바 세션과 파에 CPU와 메모리 자원을 소모이 백그라운드 프로세스를 볼 수 있습니다.
JIT 컴파일의 장점
다음은 편집 기술을 통해 JIT 컴파일을 사용하는 장점이있다 오라클 데이터베이스의 이전 버전에서 사용 :
JIT 컴파일은 투명하게 작동
JIT 컴파일이 자바 클래스의 성능을 최대 속도
는 의미 자바 코드가 변경되지 않았 음을 알고있을 때 코드는 세션 또는 인스턴스에서 자바 프로그램의 재 컴파일을 방지 컴파일되어 저장 JIT.
JIT 컴파일이 수행 C 컴파일러를 필요로하지
JIT 컴파일 검사 배열의 범위를 일부 제거
JIT 컴파일 블록 내에서 공통 서브 표현식을 제거
JIT 컴파일이 빈 메소드 제거
JIT 컴파일이 지역 변수의 레지스터 할당 영역을 정의
JIT 컴파일 흐름 분석의 필요가 없습니다
JIT 컴파일 제한을 인라인 코드
Oracle Database 11g의 도입 방법
: 11g 릴리스 1 (11.1) 이후는 DBMS_JAVA 패키지는 동기 메소드 컴파일을 제어하고 해석 방법의 실행을 되돌리기 위해 자바 진입 점을 제공하기 위해 다음과 같은 새로운 공공 방법으로 향상되었습니다
set_native_compiler_option
이 절차는 기본 설정 현재 스키마에 지정된 값에 -compiler 옵션을 선택합니다. Optionname에 의해 주어진 옵션이 중복 값이 허가되어 있지 않은 경우, 값은 무시됩니다.
절차의 set_native_compiler_option은 (Optionname을 VARCHAR2는,
값 VARCHAR2는)
unset_native_compiler_option
이 절차 현재 스키마에 대한 네이티브 컴파일러 옵션 / 값 쌍 설정을 해제합니다. Optionname에 의해 주어진 옵션이 중복 값이 허가되어 있지 않은 경우, 값은 무시됩니다.
절차의 unset_native_compiler_option가 (이 Optionname VARCHAR2는,
값 VARCHAR2)
compile_class
이 기능은 현재 스키마에서 클래스 이름으로 식별되는 클래스에 의해 정의 된 모든 메소드를 컴파일합니다. 이 방법의 수가 성공적으로 컴파일 반환한다. 클래스가 존재하지 않는 경우, 다음 ORA-29532 (catch되지 자바 예외)가 발생합니다.
기능의 compile_class (클래스 이름 VARCHAR2) 반환 번호를;
uncompile_class
이 기능은 현재 스키마에서 클래스 이름으로 식별되는 클래스에 의해 정의 된 모든 방법을 uncompiles. 이 방법의 수가 성공적으로 컴파일되지 않은 리턴한다. 인수 permanentp의 값이 0이 아닌 경우, 다음과 같은 영구적 동적으로 uncompilable 이러한 방법을 표시합니다. 그렇지 않으면 미래의 동적 재 컴파일을받을 수 있습니다. 클래스가 존재하지 않는 경우, ORA-29532 (catch되지 Java 예외)가 발생한다.
FUNCTION의 uncompile_class (클래스 이름 VARCHAR2,
permanentp NUMBER 기본 0) 반환 번호;
compile_method
이 기능에 의해 지정된 메소드를 컴파일
번역되고, 잠시 기다려주십시오..

자바 성능 데이터베이스너는 너의 자바 성능 향상 사용:컴파일러 프로그램 마침 갑골문 (화)자바 메모리 사용량컴파일러 프로그램 마침 갑골문 (화)이 부분은 설명 제시간에 컴파일러 데이터베이스 부터 g 버전 1 (1).이 길은 내용가상 머신 제시간에 개요제시간에 어셈블리 장점데이터베이스 g 방법메모:대체 이 컴파일러 한 편 쓰는 일찍 데이터베이스 중 버전.가상 머신 제시간에 개요우선 g 버전 1 (11.1) 갑골문, 여전히 제시간에 컴파일러 프로그램 환경 갑골문.컴파일러 프로그램 때문에 한 시간 더 실행 때문에, 그것은 관리 다시 효력을, 저장 및 외부 구조 코드 없다.동적 데이터 수집 선을 따라, 이 컴파일러 투명하게 자바 방법 선택 편성 컴퓨터 코드 사람 동적 그들로 하여금 자바 실행 회의 얻을 수 있다.또 컴파일러 이용할 수 있는 자바 제 모델 같은 갑골문 선택할 끝까지 자바 방법 편성 전 데이터베이스 전화, 회의 혹은.지출이 이렇게 끝까지 피할 수 없는 강을 회의 때 다시 컴파일 체조 사용하는 것은, 어의 자바 코드 변화가 없다.이 컴파일러 받는 새로운 불 값 초기화 변수 이름이 java_jit_enabled.자바 실행 방법 쓸 때 큰 java_jit_enabled 값 진짜, 자바 방법을 통해 자동으로 편집 코드 컴파일러, 사용할 수 있는 들어 모든 회의.java_jit_enabled 매개 변수 설정 편집 때문에 진짜 아직 더 제시간에 멈추고, 어떤 방법을 이미 다시 편성 어떻게 해석을 한다.가상 머신 자동 번역 필요할 때 로컬 코드 자바 방법, 예를 들면, 그 다음 자바 reresolution 함유되어 있다.내 이 컴파일러 실행 중 한 노예, 한 번 들어 배경 프로그램.그래서 내가 컴파일러 실행 및 적극적인 편성 방법, 너 이 배경 프로그램 소비 호스트 자원 같은 자바 회의 사용자.제시간에 어셈블리 장점다음 시간 이상 우세를 이용해 어셈블리 어셈블러 기술 데이터베이스 이전 버전:투명하게 제시간에 번역 작품어셈블리 성능 제시간에 속도를 클래스어셈블리 코드 다시 제시간에 저장 피할 수 있는 자바 애플릿을 전체 회의 또는 상황에서 조사에 따르면, 어의 자바 코드 변화가 없다.제시간에 어셈블러 필요 컴파일러일부 제시간에 편집 배열 경계 검사 없애다어셈블러 사라졌다 흔한 부분식 제시간에 블록어셈블러 사라졌다 제시간에 빈 방법정의를 위해 제시간에 어셈블리 이 지역의 지방 변수 레지스터제시간에 어셈블러 필요가 흐름 해석어셈블리 - 코드 시간 제한데이터베이스 g 방법1 (1) g 석방 때문에, dbms_java 패키지 이미 높아졌다 대중을 위해 새로운 방법을 다음 자바 entrypoints 동기 방법 제어 어셈블리 해석 방법 다시 실행:set_native_compiler_option한 로컬 컴파일러 프로그램 설정 이 옵션을 전류 모드 지정한 가치가 있다.만약 이 옵션을 optionname 안 주는 것은 이미 반복 값, 그리고 이 값 소홀히 해서는 안 된다.프로그램 (optionname set_native_compiler_option 없습니다,가치 없습니다);unset_native_compiler_option컴파일러 프로그램 선택 unsets 이 사람 / 값 현재 구조.만약 이 옵션을 optionname 안 주는 것은 이미 반복 값, 그리고 이 값 소홀히 해서는 안 된다.프로그램 (optionname unset_native_compiler_option 없습니다,가치 없습니다);compile_class이 함수 정의 컴파일 모든 방법을 감정 같은 이 바로 현재 구조.여러 방법으로 그것을 다시 성공적으로 작성했습니다.만약 이러한 존재하지 않습니다. 그럼 한 ora-29532 (아직 발견되지 예외) 발생.기능 (이름 수가 없습니다) compile_class 돌아오다;uncompile_class모든 방법을 uncompiles 이 함수 정의 바로 이 같은 게 현재 구조.그것은 복귀 성공적으로 uncompiled 방법.만약 매개 변수 값 permanentp 제로 mark 이 방법, 그리고 동적 uncompilable 영원히.그렇지 않으면, 나중에 다시 받을 수 있어.만약 이러한 존재하지 않습니다. 그럼 한 ora-29532 (아직 발견되지 예외) 발생.기능이 없습니다 uncompile_class (이름,기본값 0) 수가 permanentp 돌아올 수 있다.compile_method이 기능을 지정한 파일 방법
번역되고, 잠시 기다려주십시오..
