我有一个简单的UDP服务器,它创建一个新的线程来处理传入的数据。通过每秒发送大约100个数据包对其进行测试时,我注意到它的内存使用量在继续增加。下面的代码中有明显的漏洞吗?
以下是服务器的代码。
public class UDPServer
{
public static void main(String[] args)
{
UDPServer server = new UDPServer(15001);
server.start();
}
private int port;
public UDPServer(int
我有一个多线程Java web服务器,它可以接受客户端的请求。
RAM中的每个请求都为此请求分配内存,但在套接字关闭后未清除。只有在重新启动web服务器之后才会进行清理。
如果是内存泄漏,那么代码的哪一部分会发生?
我的代码:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Main {
public static void main(String[] args) {
try (ServerSocket server = new
我正在实现一个UDP程序,客户端向另一个客户端发送一条消息,该消息将存储在服务器中,当另一个客户端在线时,服务器将发送该消息。
我对许多客户端使用了多线程。
当我编译服务器类时,我得到了这个错误
Server started at port# 9776
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.
最近,我注意到我的apache在我的Linode服务器上使用了荒谬的内存(比以前多了80 my ),重新启动apache2似乎解决了这个问题。
我在apache上运行SVN,在服务器上运行mysql和tomcat,但两者似乎都不是问题所在。如何调试apache正在丢失内存的地方?除了SVN,它实际上只是托管一个wordpress博客,所以我不知道泄漏可能发生在哪里。我使用了ubuntu8.04存储库中的默认安装。
有什么帮助吗?
所以,我刚买了一台新的16核服务器,带有AMD6212处理器。我也有在各种Intel处理器上运行过的代码。它使用锁定队列将工作分配给pthread,然后pthread将工作写回共享内存,同时锁定写操作。我主要是受计算限制的。
在英特尔处理器上,随着线程数量的增加,我的性能会立即提高。从1个线程增加到2个线程几乎将性能提高了一倍。
在AMD处理器上使用相同的代码,即使是4个线程,我也得不到任何收益(略微减慢)。但是,当我使用128个线程时,我发现速度提高了6倍。
有谁知道这会发生什么吗?
至于操作系统规格,如果我键入:
cat /proc/version
我得到了:
Linux version