当前位置:  开发笔记 > 编程语言 > 正文

Java UDP Server会增加内存

如何解决《JavaUDPServer会增加内存》经验,为你挑选了1个好方法。

我有一个简单的UDP服务器,它创建一个新的线程来处理传入的数据.在通过发送大约100个包/秒进行测试时,我注意到它的内存使用量继续增加.我的代码下面是否有明显的泄漏?

这是服务器的代码.

public class UDPServer
{
    public static void main(String[] args)
    {
        UDPServer server = new UDPServer(15001);
        server.start();
    }

    private int port;

    public UDPServer(int port)
    {
        this.port = port;
    }

    public void start()
    {
        try
        {
            DatagramSocket ss = new DatagramSocket(this.port);

            while(true)
            {   
                byte[] data = new byte[1412];
                DatagramPacket receivePacket = new DatagramPacket(data, data.length);
                ss.receive(receivePacket);
                new DataHandler(receivePacket.getData()).start();
            }

        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

}

这是处理数据的新线程的代码.目前,run()方法不执行任何操作.

public class DataHandler extends Thread
{
    private byte[] data;

    public DataHandler(byte[] data)
    {
        this.data = data;
    }

    @Override
    public void run()
    {
        System.out.println("run");
    }

}

Mavrik.. 5

当然,你在每个循环中分配(至少)1412个字节的新内存.在GC启动并清除所有未使用的已分配数据之前,您会看到内存使用量增加.

使用Java VisualVM等内存分析器可视化和分析行为.



1> Mavrik..:

当然,你在每个循环中分配(至少)1412个字节的新内存.在GC启动并清除所有未使用的已分配数据之前,您会看到内存使用量增加.

使用Java VisualVM等内存分析器可视化和分析行为.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有