【发布时间】:2016-11-03 14:37:00
【问题描述】:
在我的 Spark 程序中,我对分配和使用 Java 垃圾收集器未触及的数据感兴趣。基本上,我想自己对这些数据进行内存管理,就像你在 C++ 中所做的那样。这是使用堆外内存的好例子吗?其次,您如何在 Java 或 Scala 中读取和写入堆外内存。我尝试搜索示例,但找不到任何示例。
【问题讨论】:
-
在普通的 java 代码中不是真的,也许在 jni 上是可能的。 stackoverflow.com/questions/4404872/…
-
@GoneUp: 这个javacodegeeks.com/2013/08/…
-
刚刚也看到了。我在真正的 java 程序中从来没有这样的东西,但它应该满足你的需要。
-
您可以在 Java 中进行自己的内存管理,方法是声明自己的队列或对象引用堆栈。只要引用被持有(即使堆栈或队列位置不再“活动”),相应的堆区域将不会被回收。警告购买者。
-
“其次,你如何在 Java 或 Scala 中读取和写入堆外内存。” ...你真的不知道。 Java 不支持任何类型的指针算术。它是一种托管语言。您使用它正是因为您想要该功能。如果你想做自己的指针数学,那么你会想要使用像 C 或者 Rust 这样的语言。
标签: java scala memory apache-spark heap-memory