gpt4 book ai didi

java - 如何跟踪java应用程序中创建的对象数量?

转载 作者:行者123 更新时间:2023-11-30 06:21:47 24 4
gpt4 key购买 nike

最近在面试中遇到这个问题:

You have a java application, and it uses a connection object to connect to the different clients. The connection object is of type ClientConnection. I want to know how many live connection objects are present at a particular moment in this application?

我给出的答案:

  1. 我将在ClientConnection中创建一个静态变量connectionCount类。
  2. 每次调用 ClientConnection 构造函数时,我都会递增静态变量计数减 1。
  3. 我将重写 ClientConnection 中的 Finalize() 方法,并且每次调用时,变量计数都会减 1。

但是面试官看起来对这个答案并不满意。
对于这个问题我们还有其他方法吗?

最佳答案

我认为你出错的关键部分是假设面试官实际上希望你跟踪 JVM 中对象实例的数量。相反,我认为这意味着跟踪处于“打开”状态的对象数量,其中对象的用户需要通过 close() 方法来处理该对象他们已经使用它完成了(类似于 JDBC 连接的工作方式)。

假设 ClientConnection 有某种打开和关闭方法,我将通过以下方式实现:

public class ClientConnection {

private static final AtomicInteger count = new AtomicInteger();

public void open() {
// This could also be in the constructor, depending on
// the requirements of the object
count.incrementAndGet();
}

public void close() {
// <close out the physical connection>
count.decrementAndGet();
}

public static int getConnectionCount() {
return count.get();
}

}

基本上只是使用线程安全整数作为类的静态成员,然后通过打开/关闭方法测量连接的生命周期。您还可以考虑使用公共(public)构造函数来充当 open 方法。

关于java - 如何跟踪java应用程序中创建的对象数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47996886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com