草庐IT

缓冲池

全部标签

java - FileWriter 是否使用缓冲区? (它的行为就像我的例子一样)

我正在使用FileWriter,我注意到了奇怪的行为。我自己缓冲我的Collection和我使用的每x行IOUtils.writelines(myList,"\n",writer);它不写入文件。我继续用更多行调用它,只有在它非常满时才会写入文件。它使用缓冲区吗?我在它的文档中找不到它。 最佳答案 theFileWriterclassoverview的第二句说:Theconstructorsofthisclassassumethatthedefaultcharacterencodingandthedefaultbyte-buffer

java - PrintWriter 是否缓冲?

我知道PrintWriter如果我们要写入格式化的数据是非常好的,我也知道使用BufferedWriter来提高IO性能。但是我试过这样的,PrintWriterpw=newPrintWriter(System.out);pw.println("Statement1");pw.println("Statement2");//pw.flush();我观察到当flush方法被注释时没有输出,但是当我取消注释时,我得到了想要的输出。这只有在PrintWriter被缓冲时才有可能。如果是这样,那么使用BufferedWriter包装PrintWriter然后写入它的意义何在?虽然javadoc

Java - 什么时候释放直接缓冲区?

既然脱离了jvmheap&gc,那么什么时候释放呢?或者,它一直保留到进程终止?我已经检查过:howtogarbagecollectadirectbufferjavaDeallocatingDirectBufferNativeMemoryinJavaforJOGLByteBuffer.allocate()vs.ByteBuffer.allocateDirect()但是所有的答案都是模糊的,没有一个明确的回答,有明确的答案吗?至少对于64位Linux上的Java8。 最佳答案 DirectByteBuffer不使用旧的Java终结器。

java - 带空行的缓冲阅读器 readLine()

我正在使用缓冲读取器一次从文本文件中抓取一行。我还尝试使用跟踪整数从文本文件中获取行号。不幸的是,BufferedReader正在跳过空行(只有/n或回车符的行)。有没有更好的方法来解决这个问题?使用扫描仪行得通吗?示例代码:intlineNumber=0;while((s=br.readLine())!=null){this.charSequence.add(s,++lineNumber);} 最佳答案 我无法重现您关于BufferedReader跳过空行的声明;它不应该有。以下片段显示空行并没有被跳过。java.io.Buffe

java - 我如何安全地处理 JVM 上的 key Material 缓冲区并将其归零?

我正在为执行加密操作的JVM(在Clojure中)编写软件。具体来说,给定secret输入、secretkey、非secret盐、非secret个性化,它使用BLAKE2导出512位keyMaterial。然后,它使用Arrays类中的工具将该数组分成两个256位block。(source)该操作的实际实现存在于libsodium中所以它是在C中实现的。我正在使用caesium访问它,它是kalium的包装器,一个使用jnr-ffi的库调用底层C实现。由于上面的所有缓冲区都有敏感的keyMaterial,我想确保它已从内存中清除。我不确定如何在JVM上安全地执行此操作(哎呀,我什至不确

java - 压缩 java nio 直接缓冲区

gzip输入/输出流不在Java直接缓冲区上运行。是否有任何直接在直接缓冲区上运行的压缩算法实现?这样就没有将直接缓冲区复制到java字节数组进行压缩的开销。 最佳答案 我并不是要贬低你的问题,但这真的是你程序中的一个很好的优化点吗?您是否通过分析器验证您确实有问题?您提出的问题意味着您没有进行任何研究,而只是猜测您将通过分配一个字节[]来遇到性能或内存问题。由于此线程中的所有答案都可能是某种形式的黑客攻击,因此在解决问题之前,您应该确认您确实有问题。回到问题,如果您想在ByteBuffer中“就地”压缩数据,答案是否定的,Java

java - 在 Java 中寻找简单的持久消息缓冲区

我正在寻找一个简单的持久缓冲区作为Java应用程序中JSON消息的临时存储。内存使用量应该相对恒定,而不取决于缓冲区中的消息数量。如果能够重播过去某个时间点的消息,那就太好了。删除旧消息应该是有效的。需要能够处理1m消息/小时。目前,我的应用程序使用本地RabbitMQ代理将消息铲到远程RabbitMQ代理。当远程代理关闭或不接受消息时,本地RabbitMQ代理的内存使用量随着队列长度的增加而增加,最终它停止接受消息。我想将其换成基于本地磁盘的缓冲区和一个将消息复制到远程RabbitMQ代理的线程。有人有什么想法吗?我看过Kafka,但它对我的用例来说似乎有点矫枉过正。MongoDB是

java - 我应该为我的 2D 滚动 map 使用什么缓冲策略?

所以,我正在用Java创建一个2dtop-down游戏。我正在按照Java2D:HardwareAccelerating-Part2-BufferStrategies的说明进行操作利用硬件加速。基本上,我的想法是:我希望能够轻松地向map添加更多部分。所以我宁愿不走我看过的一些教程中建议的路线(每个map图block都有一个周围图block的邻接列表;从中心图block开始,用广度优先搜索填充屏幕)。相反,我的想法是拥有屏幕大小的图block集合(为简单起见,假设为32x32),并且这些屏幕“block”中的每一个都将有一个引用每个相邻集合的列表。然后,我将为当前屏幕和相邻的8个屏幕创

java - 缓冲迭代器实现

有人知道开源BufferedIterator,它在后台线程上急切地获取下N个元素吗?这是animplementation来自TechRepublicarticle,但我认为它尚未经过彻底测试。Iterators.buffer(IteratortoBuffer,intbufferSize)是对Guava的一个很好的补充,有没有考虑过? 最佳答案 链接的实现似乎是为Java4编写的,可以使用guava和java.util.concurrent进行一些简化:importjava.util.Iterator;importjava.util.

java - 如何通过 FileWriter 在 BufferedWriter 上设置缓冲区大小

当我使用一些线程将数据写入单个文件时,我遇到了BufferedWriter的问题。我设置了BufferedWriter的缓冲区大小,但无论我设置多少,它都会在缓冲区为8192(默认缓冲区大小)而不是我设置的大小时将数据刷新到磁盘(这里是16384)。我的代码有问题吗?这就是我构建BufferedWriter的方式:newBufferedWriter(newFileWriter(fileName,true),16384);这是完整的代码:importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileWriter;imp