検索

ホームページ  >  に質問  >  本文

java - C++ jniを介してjvmを作成することは、jarを直接起動するよりもはるかに行き詰まりますか?

C++でJavaプログラムのentry main関数を呼び出すためにjniを使用したいのですが、この方法で作成されたjvmは、javawコマンドで直接実行するよりもはるかにスタックしますが、jvmパラメータの設定は同じです。 C++ で実行する場合、fps は 10 ~ 30 にすぎませんが、jar を直接実行すると 50 ~ 100 に達する可能性があります。
その理由を教えてください。改善する方法はありますか?

リーリー
巴扎黑巴扎黑2778日前799

全員に返信(1)返信します

  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:23:53

    jdk ソース コードで javaw.exe のソース コードを見たことがある場合は、JNI_CreateJavaVM を使用して実装されているため、コードと javaw.exe の違いを比較することができます。

    さらに 2 つの可能性が思い浮かびます:

    1. Windows の jvm には serverclient两种类型,性能差别还是挺大的,javaw.exe会自动选择(也可以用-server-client が指定されています) C++ で呼び出す場合、どの jvm.dll を使用するかを指定する必要があるようです。

    2. C++ をコンパイルするときにどの標準ライブラリ (シングルスレッドまたはマルチスレッド) が使用されますか? それが jvm の呼び出しに影響するかどうかは不明です。
    3. 返事
      0
  • キャンセル返事