Ignite 版本:2.12 操作系统:Windows 10
我试图了解点燃堆的使用情况。我使用以下命令启动了 Ignite 服务器,没有特殊的 vm 参数。正如https://ignite.apache.org/docs/latest/quick-start/java所建议的
ignite.bat -v ..\examples\config\example-ignite.xml
Run Code Online (Sandbox Code Playgroud)
开始使用 VisualVM 工具分析堆使用情况的帖子,堆使用情况如下所示
我尝试的下一步是增加堆内存并重新启动服务器。令人惊讶的是,现在 ignite 消耗了更多的内存,如下图所示
我知道 GC 正在努力清除堆,但为什么 ignite 内存消耗会随着堆空间的增加而增加?
这将如何影响具有约 40-60G 内存的服务器,Ignite 预计会消耗多少内存?
我计划使用 ignite 作为内存缓存,并使用 Cassandra 作为数据库。
小智 5
就像 Cassandra、Hadoop 或 Kafka 一样,Ignite 是一个 Java 中间件,它使用 Java 堆来满足各种需求。但您的数据始终存储在堆外内存中,这样就可以利用所有可用内存空间,而不必担心垃圾收集。这使 Ignite 能够完全控制数据的管理方式,并确保系统的长期性能。
Ignite 使用页面内存模型来存储所有内容,包括用户数据、索引、元信息等。这使得 Ignite 能够利用内存管理、提高性能,并且还可以使用整个磁盘而无需任何数据修改。
换句话说,您可能认为直接页内存访问是通过内存指针(JVM 外部)执行的,但一些内部任务(例如引导 Ignite 本身、执行本地 SQL 处理任务等)确实需要 JVM 堆,因为 Ignite 本身是编写的在爪哇。
这将如何影响具有约 40-60G 内存的服务器,Ignite 预计会消耗多少内存?
您需要 40-60 GB 的 RAM + JVM 本身的内存(Java 堆),推荐值可能有所不同,但 2GB 的 Java 堆应该足够了。
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |