heben

LWJGL3的内存管理,简介及目录

LWJGL3 (Lightweight Java Game Library 3),是一个支持OpenGL,OpenAl,Opengl ES,Vulkan等的Java绑定库。《Minecraft》便是基于LWJGL的作品。Java1.4发布于2002年初,而 LWJGL 创建于几个月之后。这并非巧合,而是随着Java1.4发布的NIO库,终于使得直接而高效地操作堆外内存成为了可能。不需要使用堆内缓冲区就能从堆外内存读写数据,减少了数据拷贝带来的性能消耗。

LWJGL3 作为一个底层图形库,天然要追求高性能。为此提供了三种内存分配策略,性能从高到低分别为:

  1. 基于 MemoryStack 的栈上分配方式
  2. 基于 JNI 调用 jemalloc 等第三方库的内存分配技术
  3. JDK 提供的 ByteBuffer.allocateDirect

要想基于 LWJGL3 构建自己的应用,则只有在了解了这三种分配策略之后,才能运用自如不会感到困惑。LWJGL3这种库的实现需要考虑的问题相当底层,此外实现背后的设计本身也具有很高的参考价值,项目的作者spasi持续开发和维护了该项目接近二十年,其编码和设计水平值得深入学习。

LWJGL项目地址:https://github.com/LWJGL/lwjgl3
LWJGL官方网站:https://www.lwjgl.org

为了讨论LWJGL在内存分配方面的设计,我将会使用数篇随笔分开介绍,目录如下

LWJGL3的内存管理,第一篇,基础知识

LWJGL3的内存管理,第二篇,栈上分配

LWJGL3的内存管理,第三篇,剩下的两种策略

LWJGL3的内存管理,第四篇,剩下的两种策略(编写中)

LWJGL3的内存管理,第五篇,Project Panama(编写中)

相关文章:

  • 2021-10-07
  • 2021-12-14
  • 2021-07-01
  • 2021-06-10
  • 2021-12-28
猜你喜欢
  • 2020-11-04
  • 2021-08-19
  • 2021-11-03
  • 2021-06-17
  • 2021-07-30
  • 2021-06-10
  • 2021-11-03
相关资源
相似解决方案