java - 内存分配的最佳技术 - 重用一个全局内存或分配许多本地缓冲区并让它被垃圾收集

标签 java

我正在从文件中读取一堆字节消息。 我想将每条消息读入缓冲区,进行一些解析,然后将消息存储到带有字段数据的对象中。

一般来说,最好使用全局引用分配一 block 内存并为我读取的每条消息重用它,还是为每条消息分配本地对象不同的内存块(这样它可以被垃圾收集,因为有没有全局引用)?

此外,是否有一些引用资料列出了良好的 Java 编程实践/设计,可能涵盖此技术以及构建 Java 代码所需的其他技术?我已经编写 Java 代码很长时间了,但不确定我的所有技术是否都是最理想的。

最佳答案

我建议您查看Creational Patterns一般来说。这应该为您提供一个良好的入门平台。

Five well-known design patterns that are parts of creational patterns are the

  1. Abstract factory pattern, which provides an interface for creating related or dependent objects without specifying the objects' concrete classes.
  2. Builder pattern, which separates the construction of a complex object from its representation so that the same construction process can create different representations.
  3. Factory method pattern, which allows a class to defer instantiation to subclasses. =4. Prototype pattern, which specifies the kind of object to create using a prototypical instance, and creates new objects by cloning this prototype.
  4. Singleton pattern, which ensures that a class only has one instance, and provides a global point of access to it.

这些创建模式通常用于高性能 Java 应用程序。但需要更多的细节和测试才能知道哪种模式可以提高您的个人表现。

单独,并且比简单地更好地管理对象生命周期更进一步。有诸如OpenHFT之类的库(高频交易)甚至可以让你 IPC 进入共享内存段。 ,这不是你想要的,我假设你没有计算微秒。但我认为这说明关闭 GC 并不像描述的那么牵强。

但如果我是你,我会尝试一种合适的创建模式来更好地管理我的对象生命周期。

关于java - 内存分配的最佳技术 - 重用一个全局内存或分配许多本地缓冲区并让它被垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30834977/

相关文章:

java - 如何静态初始化二维列表?

java - 无法解析类型 java.lang.Enum - 在 Eclipse 中导入 Java 项目后出现错误

java - 我想在Java中获取arrayList的单个元素

java - 将 LocalDate 转换为 DD/MM/YYYY LocalDate

java - 围绕它的中心旋转一个矩形多边形。 ( java )

java - 由于带有操作栏 sherlock 的 Robotium 测试项目中的 'java.lang.IllegalAccessError',仪器运行失败

java - 字节流/C/JNI

java - 如何在使用 Jackson 将 json 转换为 Java 对象时忽略 Map 相关的大括号

java - 从 Java 堆转储中查看 StringBuffer 或 char[] 的内容

java - 如何使用 Spring-data-JPA 使用 crudRepository 在 MySQL 数据库中附加多条记录?