gpt4 book ai didi

java - 我应该从应用程序 native 库(通过 JNI 使用)中抛出 java.lang.OutOfMemoryError 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:29 25 4
gpt4 key购买 nike

我正在设计一个解决方案,其中包括一个 C++ 库和几个通过 JNI 使用该库的 Java 应用程序。

C++ 库大量分配 native 内存。当此分配失败时,可以从 C++ 代码中检测到。分配失败应该通过抛出一些可抛出的东西来报告给 Java 代码。

考虑了 2 个选项:

  1. 从我的 C++ 代码中抛出 java.lang.OutOfMemoryError
  2. 添加 mylibrary.MyLibraryOutOfMemoryError(扩展 java.lang.RuntimeException 或 java.lang.Error),并抛出它

什么是正确的选择,为什么?

最佳答案

OutOfMemoryError具体含义:

Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector

由于它是失败的 native 堆分配,因此您的代码抛出此错误是不合适的。尽管 ByteBuffer.allocateDirect() 做了什么。

我建议您创建自己的异常,扩展 Error。它应该是一个已检查的异常,因为正在运行的程序几乎/没有什么可以避免错误。

关于java - 我应该从应用程序 native 库(通过 JNI 使用)中抛出 java.lang.OutOfMemoryError 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599954/

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