actually i have to create lots of threads to send pcap file using UDP protocol, when thread completely sends the pcap file it then sleep for some time. when i sleep thread to 420 seconds virtual memory gets full after creating more than 3100 threads and program throws a OutOfMemoryException.
i searched internet about this problem but found that a thread takes only 1MB to create and pcap file is just 60KB, and my 3100 threads are consuming more than 12GB(1.06*3100<12GB). on the other hand physical memory is not used more than 200MB. i have to create more than 5000 threads at the same time
what am i doing wrong? can anyone help me?
thanks
my code:
public static void send_pcap_file_with_single_port()
    {
        string callID = Call_ID;
        try
        {
            //CREATING CONNECTION HERE
            using (FileStream stream = new FileStream("g711a.pcap", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
            {
                for (Pos = 0; Pos < (StreamBytes - ChunkSize); Pos += ChunkSize)
                {
                    //creating RTP_header here
                    stream.Read(RTP_payload, 0, ChunkSize);
                    //combining both the byte arrays
                    System.Buffer.BlockCopy(RTP_header, 0, Bytes_to_send, 0, RTP_header.Length);
                    System.Buffer.BlockCopy(RTP_payload, 0, Bytes_to_send, 16, RTP_payload.Length);
                    RTPpacket_queue.Enqueue(Bytes_to_send);
                    //RTP_handler.Send(Bytes_to_send, Bytes_to_send.Length, remote_EP);
                }
                //done processing here
                stream.Close();
                stream.Dispose();
                RTP_count++;
                GC.Collect();
            }
            System.Threading.Thread.Sleep(420000);
        }
        catch (Exception e)
        {
            //using (StreamWriter sw = new StreamWriter(stream_logFile))
            //{
            //    sw.WriteLine(e.ToString());
            //}
            //send_BYE_message_toSIPp(client, "BYE", 5060, 2, callID);
            Console.WriteLine(e.ToString());
        }
    }
creating threads here:
Thread RTP_sender = new Thread(new ThreadStart(send_pcap_file_with_single_port));
                            RTP_sender.Start();
 
    