Redian新闻
>
请教,call c++ shared lib in java via jni
avatar
请教,call c++ shared lib in java via jni# Programming - 葵花宝典
c*8
1
请教一下:
本人在原H1B剩3年左右的时候被Mass Layoff, 随后转成F1, 去年6月Spring Term结束
后回国至今,去年九月开学时通知学校Withdraw F1 Status.现在在国内的一家美企工
作,老板同意今年transfer到美国总部上班。我打算申请新的H1B配额,但不知道回国
一年是从去年6月回国时计算还是从9月计算?
谢谢
avatar
d*d
2
http://www.youtube.com/watch?v=_OayhOWaJ8s&feature=related
春光中你的笑容
暖暖的让我感动
告别那昨日的伤与痛
我的心你最懂
尽管这夜色艨胧
也知道何去何从
我和你走过雨走过风
慢慢地把心靠拢
就让我默默地真心为你
一切在无言中
……
听着这首歌眼前就浮现出这样一个ID。
这世界纷繁而复杂,这世界多彩而耀眼。每天我都在与形形色色的人打交道,一张张熟
悉的、陌生的脸在我的眼前闪动着。在多年不断的深深浅浅交往中,我辨别着他人的好
与坏、善与恶、美与丑;我们平头百姓一般总是以最简短的话语“好”与“坏”来衡量
一个人的品质.
傻叔,是我在买买提认识的一个好人。
和傻叔的相识是在中学。他平时话不多,但是每次说话都很得体。
真正和他有接触是一次他帮我一个忙,他不求回报,让我颇为感动。然后渐渐的在各俱
乐部见到他,发现他幽默风趣,却从来不失分寸。他对每个ID都很关心,像一个大哥哥
一般劝说我们怎么好好生活好好做人。他让人感觉很亲切,也值得信任。
一眨眼已经有两个多月不见傻叔了。不管他现在在哪里,做什么,我相信好人好梦。他
一定会幸福的。至少我会一直这样祝福他。
avatar
l*v
3
刚买了台机器, 带 TV tuner card,
重装了 Win7, 能找到硬件 Hybrid ATSC/QAM PCI-E AVS Video capture(software
encoder).
今天拿到了 comcast 的 modem, 接上线, 打电话 activate, 然后modem 变成了
solid green light。 应该是通了, 但是偶这个房间没有电视可以测试。
打开 windows media center, 选 TV , live TV setup
输入 ZIP, 能找到 set-top box(1 tuner)
TV signal 选 cable,
然后就是: Windows media center cannot detect your IR receiver
有没有哪位有过类似经验? 谢谢指点
avatar
x*x
4
最近做了一个小的proj, 把一个 C++的库用jni包起来,然后在Java中调用;可是在JVM
中,内存总是不断涨到16GB, 实际上C++用的内存不过400 MB. 是不是我在compile
JNI的包的时候需要一些设置?
avatar
B*g
5
why 9月?

【在 c********8 的大作中提到】
: 请教一下:
: 本人在原H1B剩3年左右的时候被Mass Layoff, 随后转成F1, 去年6月Spring Term结束
: 后回国至今,去年九月开学时通知学校Withdraw F1 Status.现在在国内的一家美企工
: 作,老板同意今年transfer到美国总部上班。我打算申请新的H1B配额,但不知道回国
: 一年是从去年6月回国时计算还是从9月计算?
: 谢谢

avatar
h*r
6
sf赞~
傻叔who啊
avatar
i*e
7
我直接外接的天线...

【在 l****v 的大作中提到】
: 刚买了台机器, 带 TV tuner card,
: 重装了 Win7, 能找到硬件 Hybrid ATSC/QAM PCI-E AVS Video capture(software
: encoder).
: 今天拿到了 comcast 的 modem, 接上线, 打电话 activate, 然后modem 变成了
: solid green light。 应该是通了, 但是偶这个房间没有电视可以测试。
: 打开 windows media center, 选 TV , live TV setup
: 输入 ZIP, 能找到 set-top box(1 tuner)
: TV signal 选 cable,
: 然后就是: Windows media center cannot detect your IR receiver
: 有没有哪位有过类似经验? 谢谢指点

avatar
b*s
8
Java就是这样的

JVM

【在 x*x 的大作中提到】
: 最近做了一个小的proj, 把一个 C++的库用jni包起来,然后在Java中调用;可是在JVM
: 中,内存总是不断涨到16GB, 实际上C++用的内存不过400 MB. 是不是我在compile
: JNI的包的时候需要一些设置?

avatar
d*d
9
傻人

【在 h*********r 的大作中提到】
: sf赞~
: 傻叔who啊

avatar
m*r
10
不接机顶盒

【在 l****v 的大作中提到】
: 刚买了台机器, 带 TV tuner card,
: 重装了 Win7, 能找到硬件 Hybrid ATSC/QAM PCI-E AVS Video capture(software
: encoder).
: 今天拿到了 comcast 的 modem, 接上线, 打电话 activate, 然后modem 变成了
: solid green light。 应该是通了, 但是偶这个房间没有电视可以测试。
: 打开 windows media center, 选 TV , live TV setup
: 输入 ZIP, 能找到 set-top box(1 tuner)
: TV signal 选 cable,
: 然后就是: Windows media center cannot detect your IR receiver
: 有没有哪位有过类似经验? 谢谢指点

avatar
w*z
11
Java code 里有memory leak?
heap dump 看看。

JVM

【在 x*x 的大作中提到】
: 最近做了一个小的proj, 把一个 C++的库用jni包起来,然后在Java中调用;可是在JVM
: 中,内存总是不断涨到16GB, 实际上C++用的内存不过400 MB. 是不是我在compile
: JNI的包的时候需要一些设置?

avatar
h*r
12
SST?
好久没看到他了

【在 d********d 的大作中提到】
: 傻人
avatar
l*v
13
什么意思啊?

【在 m*********r 的大作中提到】
: 不接机顶盒
avatar
z*3
14
同意
另外java只是call c++ libs
内存还会暴涨,多半不是java的问题
java这个时候能做啥?除了调用这个libs以外
内存管理还是c++那个libs需要倒腾的事

【在 w**z 的大作中提到】
: Java code 里有memory leak?
: heap dump 看看。
:
: JVM

avatar
O*O
15
孙悦的祝你平安当年蜂蜜大江南北
这个对唱很浪漫
这个mv有点让人费解
那个娃娃很可爱
莫非是男人主人公的孩子?

【在 d********d 的大作中提到】
: http://www.youtube.com/watch?v=_OayhOWaJ8s&feature=related
: 春光中你的笑容
: 暖暖的让我感动
: 告别那昨日的伤与痛
: 我的心你最懂
: 尽管这夜色艨胧
: 也知道何去何从
: 我和你走过雨走过风
: 慢慢地把心靠拢
: 就让我默默地真心为你

avatar
a9
16
不要选有cable box

【在 l****v 的大作中提到】
: 刚买了台机器, 带 TV tuner card,
: 重装了 Win7, 能找到硬件 Hybrid ATSC/QAM PCI-E AVS Video capture(software
: encoder).
: 今天拿到了 comcast 的 modem, 接上线, 打电话 activate, 然后modem 变成了
: solid green light。 应该是通了, 但是偶这个房间没有电视可以测试。
: 打开 windows media center, 选 TV , live TV setup
: 输入 ZIP, 能找到 set-top box(1 tuner)
: TV signal 选 cable,
: 然后就是: Windows media center cannot detect your IR receiver
: 有没有哪位有过类似经验? 谢谢指点

avatar
x*x
17
how to do jvm dump/snapshot when the memory is growing out of bound? the
JNI interface is generated by swig now, and it still have the same problem.

【在 z*******3 的大作中提到】
: 同意
: 另外java只是call c++ libs
: 内存还会暴涨,多半不是java的问题
: java这个时候能做啥?除了调用这个libs以外
: 内存管理还是c++那个libs需要倒腾的事

avatar
c*e
18
竟然叫他傻叔。。。。怪不得他气不来了。

【在 h*********r 的大作中提到】
: SST?
: 好久没看到他了

avatar
h*c
19
算了吧,用fifo etc
avatar
m*y
20
啊?都是我不好

【在 c********e 的大作中提到】
: 竟然叫他傻叔。。。。怪不得他气不来了。
avatar
h*r
22
谁把他叫回来吧,还没来得及熟悉SST,他就不见了。

【在 m**y 的大作中提到】
: 啊?都是我不好
avatar
x*x
23
Thanks, but do you mean the first-in-first-out, or something?

【在 h**********c 的大作中提到】
: 算了吧,用fifo etc
avatar
M*e
24
他不来应该有他的原因吧

【在 h*********r 的大作中提到】
: 谁把他叫回来吧,还没来得及熟悉SST,他就不见了。
avatar
h*c
25
FIFO is one of the inter process communication methods. IPC

【在 x*x 的大作中提到】
: Thanks, but do you mean the first-in-first-out, or something?
avatar
c*e
26
。。。。。算了,不说你了。

【在 M**e 的大作中提到】
: 他不来应该有他的原因吧
avatar
x*o
28
赞傻叔

【在 d********d 的大作中提到】
: http://www.youtube.com/watch?v=_OayhOWaJ8s&feature=related
: 春光中你的笑容
: 暖暖的让我感动
: 告别那昨日的伤与痛
: 我的心你最懂
: 尽管这夜色艨胧
: 也知道何去何从
: 我和你走过雨走过风
: 慢慢地把心靠拢
: 就让我默默地真心为你

avatar
D*g
29
有一点在用JNI的时候一定要注意,在把Java的type转换成native type以后,等native
type的变量用完以后,要调用相应的release函数释放内存,否则有可能导致(不是一
定会)内存泄漏而可能导致你这样的问题。比如:
JNI C++ side:
const char *nativeString = env->GetStringUTFChars(javaString, 0);
//Do something with the nativeString
//DON'T FORGET THIS LINE!!!
env->ReleaseStringUTFChars(javaString, nativeString);
同样, env->GetIntArrayElements(),env->ReleaseIntArrayElements()等等也是。

JVM

【在 x*x 的大作中提到】
: 最近做了一个小的proj, 把一个 C++的库用jni包起来,然后在Java中调用;可是在JVM
: 中,内存总是不断涨到16GB, 实际上C++用的内存不过400 MB. 是不是我在compile
: JNI的包的时候需要一些设置?

avatar
x*o
30
你准备怎么熟悉?

【在 h*********r 的大作中提到】
: 谁把他叫回来吧,还没来得及熟悉SST,他就不见了。
avatar
x*x
31
Thanks a lot! I do have quite a few functions in JNI for env->
GetStringUTFChars, now all are paired with ReleaseStringUTFChars.
There is another set of functions on env->NewStringUTF(), see the example
code here:
=========================
std::vector< std::string >::value_type *result = 0 ;
result = a_function_to_allocate_mem(jobject arg1, int arg2);
jresult= env->NewStringUTF(result->c_str());
return jresult;
=========================
should I also pair it with
env->DeleteLocalRef(arg1_);
or should I do
delete result?
before the return statement?
Thanks again!

native

【在 D********g 的大作中提到】
: 有一点在用JNI的时候一定要注意,在把Java的type转换成native type以后,等native
: type的变量用完以后,要调用相应的release函数释放内存,否则有可能导致(不是一
: 定会)内存泄漏而可能导致你这样的问题。比如:
: JNI C++ side:
: const char *nativeString = env->GetStringUTFChars(javaString, 0);
: //Do something with the nativeString
: //DON'T FORGET THIS LINE!!!
: env->ReleaseStringUTFChars(javaString, nativeString);
: 同样, env->GetIntArrayElements(),env->ReleaseIntArrayElements()等等也是。
:

avatar
x*o
32
你知道?

【在 c********e 的大作中提到】
: 。。。。。算了,不说你了。
avatar
D*g
33
In this case, you want to delete result, not delete localref.
So just use:
delete result;
Why?
Because result points to an object that is locally allocated in native
method, this is not managed by VM and only with native method itself. So you
want to free up memory upon exit from the native method. Otherwise, memory
leaks! However, for the local reference, you don't have to worry about that
since it is automatically freed upon exit from native method. See JNI
official docs for more information:
http://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/
"
Local References
Local references are valid for the duration of a native method call. They
are freed automatically after the native method returns. Each local
reference costs some amount of Java Virtual Machine resource. Programmers
need to make sure that native methods do not excessively allocate local
references. Although local references are automatically freed after the
native method returns to Java, excessive allocation of local references may
cause the VM to run out of memory during the execution of a native method.
"

【在 x*x 的大作中提到】
: Thanks a lot! I do have quite a few functions in JNI for env->
: GetStringUTFChars, now all are paired with ReleaseStringUTFChars.
: There is another set of functions on env->NewStringUTF(), see the example
: code here:
: =========================
: std::vector< std::string >::value_type *result = 0 ;
: result = a_function_to_allocate_mem(jobject arg1, int arg2);
: jresult= env->NewStringUTF(result->c_str());
: return jresult;
: =========================

avatar
d*d
34
还是说吧

【在 c********e 的大作中提到】
: 。。。。。算了,不说你了。
avatar
h*r
35
人有很多面,慢慢熟悉

【在 x******o 的大作中提到】
: 你准备怎么熟悉?
avatar
S*d
36
为什么苏兄每次玩失踪都有大队美女出来深情呼唤?XMDJH……
avatar
m*a
37
赞偶像,很会关怀别人

【在 d********d 的大作中提到】
: http://www.youtube.com/watch?v=_OayhOWaJ8s&feature=related
: 春光中你的笑容
: 暖暖的让我感动
: 告别那昨日的伤与痛
: 我的心你最懂
: 尽管这夜色艨胧
: 也知道何去何从
: 我和你走过雨走过风
: 慢慢地把心靠拢
: 就让我默默地真心为你

avatar
m*a
38
赞偶像,很会关怀别人

【在 d********d 的大作中提到】
: http://www.youtube.com/watch?v=_OayhOWaJ8s&feature=related
: 春光中你的笑容
: 暖暖的让我感动
: 告别那昨日的伤与痛
: 我的心你最懂
: 尽管这夜色艨胧
: 也知道何去何从
: 我和你走过雨走过风
: 慢慢地把心靠拢
: 就让我默默地真心为你

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。