Tag: 开销

Java代理发现机器人

我写了一个类,ProxyFinder连接到随机ips并首先ping它们,如果它们响应,尝试通过公共代理端口创建一个http代理连接。 目前,它只是连接到随机ips。 这相对较快,每小时发现一些代理。 但是,我想以某种方式检查我之前是否已连接到ip。 首先我尝试将它们保存在一个列表中,但是使用了超过10GB的ram ..我在下面的代码中包含了一个方法,该方法使用RandomAccessFile将数据写入缓存,但搜索到的速度非常慢每个连接变大的整个文件。 我以尽可能小的格式存储数据,每个ip只需四个字节。 即使这是4 * 256 * 256 * 256 * 256字节.. = 16gb的原始ram ..或每次要测试另一个ip时搜索的16gb文件。 我还尝试创建一个单独的线程来生成ips,根据文件检查它们,然后将它们添加到探针线程可以从中拉出的队列中。 它无法跟上探测线程。 如何快速检查我是否已连接到IP,而不是非常慢或使用可笑的内存量? package net; import java.io.File; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import java.util.Arrays; import java.util.concurrent.atomic.AtomicInteger; /** * * @author Colby */ public class ProxyFinder { /** * @param […]

了解JVM中的对象开销

我正在研究java,我记得在某个地方读过java对象,在JVM中有一些开销,这是由虚拟机用于管理的原因。 所以我的问题是,有人可以告诉我是否以及如何在HotSpot JVM中获取对象的总大小,以及它可能带来的任何开销?

在Java中编写“exception驱动开发”的性能成本?

通过在Java中创建,抛出和捕获exception,是否有任何性能成本? 我计划将“exception驱动的开发”添加到一个更大的项目中。 我想设计自己的exception并将它们包含在我的方法中,迫使开发人员捕获并做适当的工作。 例如,如果您有一种方法可以根据名称从数据库中获取用户。 public User getUser(String name); 但是,用户可能为null,并且在使用User的公共方法之前忘记检查这一点很常见。 User user = getUser(“adam”); int age = user.getAge(); 这将导致NullPointerException和崩溃。 但是,如果我在返回user-object之前进行了检查,如果它为null并抛出’UserIsNullException’: public User getUser(String name) throws UserIsNullException; 我强迫实施者思考和行动: try { User user = getUser(“adam”); int age = user.getAge(); }catch( UserIsNullException e) { } 它使代码更安全地发生意外崩溃并消除更多错误。 假设该网站每小时有数百名访问者,这种设计模式几乎无处不在。 这样的设计方法将如何影响性能? 这些好处是否会超过成本,还是只是简单的编码? 谢谢你的帮助! UPDATE! 要清楚,我的注意力不是包装NullPointerException,正如我的例子所暗示的那样。 目标是强制实施者编写try / catch,从而避免真正崩溃的头痛: user == null 被遗忘了。 […]

Java中对象的内存开销是多少?

重复: Java中对象的内存消耗是多少? 假设在Intel或AMD机器上的64位Linux上使用Java 1.6 JVM,创建一个简单的对象会使用多少内存开销(以字节为单位)? 例如,二维数组中的每一行都是一个单独的对象。 如果我的arrays很大,我将使用多少RAM?