色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - c++ 通過(guò)jni創(chuàng)建jvm比直接啟動(dòng)jar要卡很多?

瀏覽:229日期:2024-03-25 14:41:52

問(wèn)題描述

我想在c++中用jni調(diào)用java程序的入口main函數(shù),但是這樣創(chuàng)建的jvm比直接用javaw命令運(yùn)行要卡很多,但是jvm參數(shù)設(shè)置的都是一樣的。在c++中運(yùn)行,fps只有10-30,直接運(yùn)行jar卻能達(dá)到50-100。求教這是什么原因?有什么改進(jìn)的辦法嗎?

#include <jni.h>using namespace std;extern 'C' { __declspec(dllexport) DWORD NvOptimusEnablement = 1;}int main() { JavaVMOption options[7]; JNIEnv *env; JavaVM *jvm; JavaVMInitArgs vm_args; long status; jclass cls; jmethodID mid; options[0].optionString = '-XX:+UseG1GC'; options[1].optionString = '-XX:-UseAdaptiveSizePolicy'; options[2].optionString = '-XX:-OmitStackTraceInFastThrow'; options[3].optionString = '-Xmn512m'; options[4].optionString = '-Xmx2048m'; options[5].optionString = '-Djava.library.path=natives'; options[6].optionString = '-Djava.class.path=.;libraries.zip;main.jar'; std::memset(&vm_args, 0, sizeof(vm_args)); vm_args.version = JNI_VERSION_1_8; vm_args.nOptions = 7; vm_args.options = options; cout << 'start creat jvm!n'; status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); if (status != JNI_ERR) {cout << 'jvm created successn';cls = env->FindClass('main/Main');if (cls != 0) { mid = env->GetStaticMethodID(cls, 'main', '([Ljava/lang/String;)V'); if (mid != 0) {jclass clz_string = env->FindClass('java/lang/String');if (clz_string != NULL) { jobjectArray result = env->NewObjectArray(2, clz_string, NULL); jstring arg0 = env->NewStringUTF('--accessToken'); jstring arg1 = env->NewStringUTF('14233482b8dbad97617757a5c31d5872'); env->SetObjectArrayElement(result, 0, arg0); env->SetObjectArrayElement(result, 1, arg1); env->CallStaticVoidMethod(cls, mid, result);} }} else { cout << 'class not foundn';}jvm->DestroyJavaVM();return 0; } else {return -1; }}

問(wèn)題解答

回答1:

你看過(guò)jdk源碼中javaw.exe的源碼就知道了,它也是用JNI_CreateJavaVM實(shí)現(xiàn)的,所以可以對(duì)比下你的代碼跟javaw.exe實(shí)現(xiàn)的有什么不同。

另外想到兩種可能:

Windows下jvm有server和client兩種類型,性能差別還是挺大的,javaw.exe會(huì)自動(dòng)選擇(也可以用-server或-client指定),用c++調(diào)用好像要指定用哪個(gè)jvm.dll的;

c++編譯時(shí)用了哪個(gè)標(biāo)準(zhǔn)庫(kù)(單線程還是多線程),不清楚是否會(huì)影響到j(luò)vm的調(diào)用。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 欧美激情久久久久久久久 | 91麻精品国产91久久久久 | 国产成人亚洲精品 | 免费看国产精品久久久久 | 亚洲天堂网在线视频 | 国产精品9999久久久久 | 手机看片日韩高清国产欧美 | 久久国产精品久久 | 欧美另类69xxxxx视频 | 国产精品美乳免费看 | 国产成人综合亚洲欧美在 | 国产三级小视频 | 特级毛片永久久免费观看 | 日韩专区亚洲精品欧美专区 | 美女叉开腿让男人捅 | 九色97 | 欧美黄色网络 | 欧美在线做爰高清视频 | 亚洲国产精品日韩在线 | 一本色道久久综合亚洲精品 | 很黄很色的免费视频 | 欧美 亚洲 另类 自拍 在线 | 在线观看毛片视频 | 国产杨幂福利在线视频观看 | 偷拍自拍第一页 | 乱人伦中文视频在线观看免费 | 色视频在线观看免费 | 欧美一级特黄aaaaaa在线看片 | 免费成年人视频网站 | 精品久久久久久影院免费 | 中文国产成人精品久久无广告 | 欧美成人久久久免费播放 | 成人黄网大全在线观看 | 亚洲欧洲日韩综合色天使不卡 | 欧美一级一极性活片免费观看 | 日韩一级视频在线观看播放 | 亚洲一区二区久久 | 大狠狠大臿蕉香蕉大视频 | 伊在人亚洲香蕉精品区 | 好叼操这里只有精品 | 九九视频在线免费观看 |