我在一台内存为32 as的机器上使用IoTDB,并在iotdb_env.sh中设置JVM最大内存如下:
MAX_HEAP_SIZE = 25G然而,经过两个小时的数据摄取,我发现IoTDB已经使用了31 by的内存,很快就会被OOM杀手杀死。为什么IoTDB可以比MAX_HEAP_SIZE使用更多的内存
发布于 2021-11-18 01:58:03
在jvm中,内存分为堆内存和非堆内存。你可以参考这个问题来获取更多的详细信息:What is the difference between Java Non Heap Memory and Stack Memory? Are they Same if not what is the difference between them? IoTDB使用了一些使用非堆内存的直接缓冲区。因此总内存使用量将超过MAX_HEAP_SIZE。您可以在iotdb_env.sh中使用以下参数来控制非堆内存:
MAX_DIRECT_MEMORY_SIZE = 5G你需要确保MAX_HEAP_SIZE + MAX_DIRECT_MEMORY_SIZE <总内存,以避免OOM杀手杀死你的IoTDB。
https://stackoverflow.com/questions/70013466
复制相似问题