찾다

 >  Q&A  >  본문

java - c++ jni를 통해 jvm을 생성하는 것이 jar를 직접 시작하는 것보다 훨씬 더 어렵습니까?

java 프로그램의 진입 main 함수를 C++로 호출하기 위해 jni를 사용하고 싶은데 이렇게 생성된 jvm은 javaw 명령으로 직접 실행하는 것보다 훨씬 막히지만 jvm 매개변수 설정은 동일합니다. C++에서 실행할 때 fps는 10-30에 불과하지만 jar를 직접 실행하면 50-100에 도달할 수 있습니다.
이유가 무엇인지 알려주세요. 이를 개선할 수 있는 방법이 있나요?

으아악
巴扎黑巴扎黑2797일 전819

모든 응답(1)나는 대답할 것이다

  • 伊谢尔伦

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

    jdk 소스 코드에서 javaw.exe 소스 코드를 본 적이 있으면 알 수 있습니다. 또한 JNI_CreateJavaVM을 사용하여 구현되므로 코드와 javaw.exe의 차이점을 비교할 수 있습니다. JNI_CreateJavaVM实现的,所以可以对比下你的代码跟javaw.exe实现的有什么不同。

    另外想到两种可能:

    1. Windows下jvm有serverclient两种类型,性能差别还是挺大的,javaw.exe会自动选择(也可以用-server-client

      또 다른 두 가지 가능성이 떠오릅니다.
    2. <올>
    3. Windows에는 serverclient라는 두 가지 유형의 jvm이 있습니다. javaw.exe는 자동으로 (를) 선택합니다. -server 또는 -client를 사용하여 지정할 수도 있습니다. C++로 호출할 때 사용할 jvm.dll을 지정해야 하는 것 같습니다.

    4. C++를 컴파일할 때 어떤 표준 라이브러리(단일 스레드 또는 다중 스레드)가 사용됩니까? jvm 호출에 영향을 미칠지 확실하지 않습니다.
    🎜 🎜

    회신하다
    0
  • 취소회신하다