Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ZeroMQ(JeroMQ)接收调用会导致java gc循环_Java_Garbage Collection_Jeromq - Fatal编程技术网

ZeroMQ(JeroMQ)接收调用会导致java gc循环

ZeroMQ(JeroMQ)接收调用会导致java gc循环,java,garbage-collection,jeromq,Java,Garbage Collection,Jeromq,我正在评估ZeroMQ作为低延迟项目的候选。但是我找不到一种方法来阻止GC循环,这是纯java实现recv调用导致的。有没有办法告诉ZeroMQ使用相同的字节缓冲区进行同步读取 private static ZContext context; public static void main(String[] args) { try { context = new ZContext(); ZFrame qFrame = new ZFrame(quer

我正在评估ZeroMQ作为低延迟项目的候选。但是我找不到一种方法来阻止GC循环,这是纯java实现recv调用导致的。有没有办法告诉ZeroMQ使用相同的字节缓冲区进行同步读取

private static ZContext context;
public static void main(String[] args)
{
    try
    {
        context = new ZContext();
        ZFrame qFrame = new ZFrame(queryBuffer);

        // Socket to talk to clients
        ZMQ.Socket socket = context.createSocket(SocketType.REQ);
        socket.connect(ConnectionUtils.tcp(serverIp, serverPort));
        
        //socket.setHWM(1000);
        //socket.setReceiveBufferSize(2000);
        //socket.setLinger(1000);
        //socket.setRcvHWM(1000);
        int i = 0;
        while (!Thread.currentThread().isInterrupted())
        {
            qFrame.sendAndKeep(socket, 0);

            socket.recv(0);
            // ZFrame f= ZFrame.recvFrame(socket,0);
            // f.destroy();
            //ZMsg answer=ZMsg.recvMsg(socket,0);
            //answer.destroy();
            //socket.recvByteBuffer(answerBuf,0);
            // answerBuf.clear();

            i++;
        }
    }
}


这里gc与
zeromq
有什么关系?你分配了吗?如果您得到GC调用,请尝试不同的方法签名。将静态字节数组传递给recv方法。但似乎zeromq在recv调用期间分配了新的字节缓冲区。我试图找到一种方法告诉zeromq不要分配新的字节缓冲区。基本上,我想为recv调用分配一个固定的缓冲区。但是socket api以某种方式创建了新对象,最终导致了gc。我对zeromq不太了解,但您需要提供获得该屏幕截图的示例。@Eugene我做了一个简单的请求-应答服务器/客户端,问题仍然存在。我认为这是一个非常基本的例子。例如代码