sql >> データベース >  >> RDS >> Oracle

MacでのOracleのJavaを理解する

    OracleのJVMは1つの場所にのみインストールされます。誤解されました!

    お気づきのとおり、/usr/binのJavaコマンド /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commandsのバイナリへのシンボリックリンクです。 。そのディレクトリ内のバイナリは、使用するJava VM *を決定し、そのVMバージョン内の対応する実際のバイナリを実行するスタブアプリケーションです。これが、/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands内のすべてのバイナリが理由です。 まったく異なる機能を実装していると予想されるにもかかわらず、サイズはほぼ同じです。

    dtraceを使用すると、これが実際に動作していることを確認できます。 :

    [email protected]:~$ sudo dtrace -n 'syscall::posix_spawn:entry { trace(copyinstr(arg1)); }' -c "/usr/bin/java -version"
    dtrace: description 'syscall::posix_spawn:entry ' matched 1 probe
    dtrace: pid 44727 has exited
    CPU     ID                    FUNCTION:NAME
      8    619                posix_spawn:entry   /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java
    

    指定されたdtrace 呼び出しにより、パス引数がposix_spawnに出力されます。 java -versionによって呼び出されたとき 。私の場合、スタブアプリケーションは/System/Library/Java/JavaVirtualMachines/1.6.0.jdkでAppleのJava1.6ランタイムを検出しました。 そのバージョンのjavaを呼び出しています コマンド。

    スタブバイナリには、もう1つの利点があります。JavaVMがインストールされていないことを検出すると、ユーザーにJavaVMのインストールを求めるプロンプトが表示されます。

    CurrentJDKについて シンボリックリンク、AppleがOS X上のJVMの唯一のソースであった過去との下位互換性のために、これを私が知ることができる限り最善です。

    *使用するJavaVMを決定する際には、要素の組み合わせが考慮されます。 JAVA_HOME 設定されている場合に使用されます(JAVA_HOME=/tmp javaを試してください )。 JAVA_HOMEの場合 が設定されていない場合、システム上のすべての仮想マシンのリストが検出されます。 JAVA_VERSION およびJAVA_ARCH 環境変数は、設定されている場合、仮想マシンのリストを特定のバージョンおよびサポートされているアーキテクチャにフィルタリングするために使用されます。結果のリストは、アーキテクチャ(32ビットよりも64ビットを優先)とバージョン(新しい方が良い)で並べ替えられ、最適な一致が返されます。



    1. シェルを使用してデータベースがPostgreSQLに存在するかどうかを確認します

    2. ガレラクラスターを保護する方法-8つのヒント

    3. Microsoft Accessの6つの主要コンポーネントは何ですか?

    4. PHPでMySQLデータをExcelにエクスポートする