- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始使用我的 Android JNI 应用程序以 API 级别 14 为目标,并立即发现描述的问题 here .
无法通过显式管理本地引用来解决问题(在我的实验结束时发现本地引用表溢出),我决定简单地切换到全局引用。现在我遇到了那篇文章中没有描述的“尝试使用过时的全局引用”问题。
这就是我正在尝试做的事情:有一个包含 jobject
容器的对象。每当 Java 调用我的 native 方法并传递一个我需要存储以备后用的引用时,我都会为该 jobject
创建新的全局引用,将全局引用添加到容器并存储其索引。每当我需要使用 jobject
时,我都会通过索引获取它。这种方法有什么问题?
P. S. 每当我调用 JNI 方法时,我都会为调用线程使用正确的 JNIEnv
。进行 JNI 调用的线程附加到 JVM。
最佳答案
Failing to solve the problem by explicitly managing local references (got local ref table overflow in the end of my experiments)
我在您的代码中闻到了更深层次的问题。如果您在从当前 JNI 调用返回之前知道您正在创建并正确地、手动地删除它们的所有本地引用,那么本地引用表溢出就不会发生。本地引用创建 might be very subtle ,它不仅仅是 FindClass
。
无论如何,如果你想让它与全局引用一起工作(考虑到你描述的使用场景,这似乎是正确的做法)我怀疑:你的“容器”有时也需要删除那些存储的引用,我猜不只是添加了。您确定要删除正确的对象,并在正确的对象上调用 DeleteGlobalRef
,而不是留在容器中的其他对象吗?换句话说,对于代码中的每个 NewGlobalRef
,请确保您知道相关的 DeleteGlobalRef
在哪里,并且您对调用它的时间和原因有信心.
关于android - "stale global reference"是什么意思以及如何存储作业对象并在线程之间传递它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627902/
已修复:这是一个 known bug在 maven-compiler-plugin 3.1 中 我正在将 1000 多个 java-sources 项目的基于 ant 的构建转换为 maven。到目前
我如何强制 Terraform 从头开始重建其计划和 tfstate 文件? 我正在考虑将我的 IAC 从 GCP 的 Deployment Manager 迁移到 Terraform,所以我想我
我们正在使用Varnish缓存6.2来位于WebAPI后端的前面。 后端会在某些请求上向后发送一个缓存控制 header ,以便我们可以缓存更长的时间。 但是-如果后端出现故障并保持故障状态,我们将在
我需要从代码访问folderId: { "folderType": 3, "createdDate": "02.09.2014 11:57:28.UTC",
我正在开发一个 Spring-MVC 应用程序,在该应用程序中我试图从数据库中删除一个对象。前几天,突然出现这个错误,现在我无法删除。我在网上检查了,但我找不到我做错了什么,并且所有解决方案似乎都不起
我用 python 用 selenium 编写了一个脚本。该脚本应该单击网页中的某些链接。当我运行脚本时,它确实单击第一个链接,然后抛出错误陈旧元素引用:元素未附加到页面文档,而不是追逐下一个链接。在
Cloudflare 记录了 Cache-Control 的指令列表 header ,包括 stale-while-revalidate . stale-while-revalidate= When
我们面临一个 memcached(Redhat 上的 v1.4.4)问题,准确描述如下: 通过 memcached 中一致的 ketama 散列,给定 key 所在的位置没有严格的状态。如果缺乏最新的
我最近开始使用我的 Android JNI 应用程序以 API 级别 14 为目标,并立即发现描述的问题 here . 无法通过显式管理本地引用来解决问题(在我的实验结束时发现本地引用表溢出),我决定
我有以下网络驱动程序功能: this.clickButton = async function () { try { var buttonElement = await driver.fi
我有一个表 (MySQL),其中有一行。 我可以很好地阅读它: self._session.query(Automatic).\ filter(Automatic.do_wh
我知道这段代码是正确的(除了 delete 没有完成): #include #include #include #include std::atomic ptr; int data; void
“陈旧”的 git 分支是我听过很多次的术语。我知道这与被认为不太有用或无用的分支有关,但找不到确切的定义。什么是“过时的”git 分支? 最佳答案 关于“陈旧”的最古老的引用文献是在 commit
我正在尝试从 Datepicker 中选择日期。以下是代码 WebDriver d=new FirefoxDriver(); Actions a=new Actions(d); String date
我很好奇 stale=update_after CouchDB View API 的功能有效。 我可以看到 here它返回陈旧的结果,然后更新 View : If stale=ok is set, C
我正在使用 RestTemplate 和 ConnectionPooling,使用 PoolingHttpClientConnectionManager 如下代码: PoolingHttpClient
代码 1: element(by.id('myButtonId')).click(); return element(by.id('myValidationSummaryId')).getText()
我正在尝试单击循环内的分页。 这是我的代码: WebElement pagination = d.findElement(By.xpath("/html/body/div[9]/div[1]/div[
在我的 post_index 操作中,我生成了不同类型的“@posts”,例如.. def index case params[:listing_type] when "all"
我编写了一个java应用程序,它首先在启动时创建一个连接池,然后在每次刷新期间,从池中获取连接,使用它,然后关闭它。当我与网络和用户断开连接时,就会出现问题按刷新按钮。应用程序似乎进入挂起状态(从我的
我是一名优秀的程序员,十分优秀!