gpt4 book ai didi

android - 将巨大的字符串从 native 传递到 java - 内存不足错误

转载 作者:太空狗 更新时间:2023-10-29 12:49:00 25 4
gpt4 key购买 nike

我正在用原生 C++ 编写一个函数,它使用 env->NewStringUTF 返回一个大字符串。问题是当字符串很大(大约 23 MB)时,我在 Java 中遇到内存不足异常。

我已经尝试过分段获取数据,但是速度很慢。

这是我的代码:

char* d = data.c_str();
jstring str = env->NewStringUTF(d);
return str;

如何将这个字符串传递给 Java?

最佳答案

你不能在内存中保留这么大的字符串。对于整个应用程序,某些 Android 设备的堆限制为 16MB。

我建议你将这个字符串保存到一个文件(或者可能在数据库中)并将文件名传递给 java。

或者也许您应该更改应用程序逻辑并继续将字符串保留在 native 空间中并仅将请求的小部分传递给 java...

附言您可以使用 GZIP 压缩字符串并多次减少它的内存占用,但您仍然无法在 java 中保留整个解压缩的字符串...

关于android - 将巨大的字符串从 native 传递到 java - 内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com