老师:请教您一个关于零拷贝的问题。
这个transferTo()方法。底层说是用的sendFile() 。数据上下文切换少,少复制数据。我用上面的代码测试,如果只是一个文件的话,那么飞快,当时当文件数是3个以上时候,就变得特别慢。每个文件几乎都很慢?这是什么原因。不清楚是操作系统限制。还是我的用法不对,或者说理解不对。在服务端程序里,多线程,高并发的 环境下,如何正确使用这个方法进行数据发送和写入呢?
问题2:mmap的问题:
在mmap文件映射时候,如果写入的数据速度很快。规定超过一定大小重新建立新文件。那么旧的映射区就要关闭。
我自己写的关闭方法,我观察内存好像并没有很快清理完成。内存 会很快爆表,如果调用force强制刷盘的话,那么就和直接使用普通IO没有多少区别了。请问老师,如果在这种场景下应该如何保障内存不爆表,且写入性能高呢?
希望老师百忙之中不吝赐教啊!!!
登录后可查看更多问答,登录/注册