java - c++ jni를 통해 jvm을 생성하는 것이 jar를 직접 시작하는 것보다 훨씬 더 어렵습니까?
巴扎黑2017-05-16 13:21:53
0
1
688
java 프로그램의 진입 main 함수를 C++로 호출하기 위해 jni를 사용하고 싶은데 이렇게 생성된 jvm은 javaw 명령으로 직접 실행하는 것보다 훨씬 막히지만 jvm 매개변수 설정은 동일합니다. C++에서 실행할 때 fps는 10-30에 불과하지만 jar를 직접 실행하면 50-100에 도달할 수 있습니다. 이유가 무엇인지 알려주세요. 이를 개선할 수 있는 방법이 있나요?
jdk 소스 코드에서 javaw.exe 소스 코드를 본 적이 있으면 알 수 있습니다. 또한 JNI_CreateJavaVM을 사용하여 구현되므로 코드와 javaw.exe의 차이점을 비교할 수 있습니다. JNI_CreateJavaVM实现的,所以可以对比下你的代码跟javaw.exe实现的有什么不同。
Windows에는 server와 client라는 두 가지 유형의 jvm이 있습니다. javaw.exe는 자동으로 (를) 선택합니다. -server 또는 -client를 사용하여 지정할 수도 있습니다. C++로 호출할 때 사용할 jvm.dll을 지정해야 하는 것 같습니다.
C++를 컴파일할 때 어떤 표준 라이브러리(단일 스레드 또는 다중 스레드)가 사용됩니까? jvm 호출에 영향을 미칠지 확실하지 않습니다. 🎜
🎜
jdk 소스 코드에서 javaw.exe 소스 코드를 본 적이 있으면 알 수 있습니다. 또한
JNI_CreateJavaVM
을 사용하여 구현되므로 코드와 javaw.exe의 차이점을 비교할 수 있습니다.JNI_CreateJavaVM
实现的,所以可以对比下你的代码跟javaw.exe实现的有什么不同。另外想到两种可能:
Windows下jvm有
또 다른 두 가지 가능성이 떠오릅니다.server
和client
两种类型,性能差别还是挺大的,javaw.exe
会自动选择(也可以用-server
或-client
Windows에는
server
와client
라는 두 가지 유형의 jvm이 있습니다.javaw.exe
는 자동으로 (를) 선택합니다.-server
또는-client
를 사용하여 지정할 수도 있습니다. C++로 호출할 때 사용할 jvm.dll을 지정해야 하는 것 같습니다.