[英]How to work with utf-8 strings in java without allocating a new String object but as part of byte array instead?
我有我的代码的位置,我想从二进制格式中读取,其中包括 utf-8 字符串。
此外,我不希望在这个地方进行任何分配,因为它们会召唤 GC,这会暂停世界,这对我来说有点糟糕。
我可以完美地使用我的大多数原语和 arrays 除了字符串,因为 java 是一种“面向对象的语言”并且强调对象的大量使用(=分配)。 并且它不提供在没有分配的情况下使用 utf-8 字符串的标准方法,因为它具有不可变的 object 之一。 所以,我需要从这些东西中得到什么——验证、提取Char
而不是创建任何其他对象。 即我应该能够把这个东西池或其他地方,用data: Array[Byte]
和offset: Int
和length: X
,不复制。 CharIterable
能够将此 object 翻新为其他字符串的东西。
那么,我应该手动执行此操作还是有人已经执行此操作?
我想您可以尝试直接调用 String 内部使用的低级库,例如CharsetDecoder
,它可以从 ByteBuffer 解码为预分配的 CharBuffer。
但是你可能做得过火了,我会先衡量使用 String (以及相关的 object 分配)是否真的是一个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.