Повторная инициализация объекта: выделение памяти - PullRequest
0 голосов
/ 19 апреля 2019

Учился многопоточному сокетному программированию на java:

Наткнулся на этот кусок кода:

ServerSocket server=new ServerSocket(8888);

while(true){
        counter++;
        Socket serverClient=server.accept();
        Threads t = new Threads(serverclient)
        }

Здесь Для каждого соединения мы создаем объект потоков (класс, который реализовал RunnableИнтерфейс).

Мой запрос: мы не создаем новый объект, а заново инициализируем тот же объект с новым значением.Таким образом, после повторной инициализации новой ссылки на объект, старая ссылка на объект должна быть удалена

. Создает этот код, чтобы понимать конструктор, работающий в Java.

public class free_memory
{

    public static void main(String args [])
    {   int i;

        long UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
        System.out.println("Total memory used before execution : " + UsedMem / 1024);

        new temp();

        UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
        System.out.println("Total memory used after  execution of 1 constructor: " + UsedMem/ 1024);

        for(i=0;i<10;i++)
        {
        new temp();
        }//for

        UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
        System.out.println("Total memory used after  execution of 10 constructor: " + UsedMem/ 1024);


        for(i=0;i<10;i++)
        {
        temp a = new temp();
        }//for

        UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
        System.out.println("Total memory used after  execution of 10 constructor: " + UsedMem/ 1024);

        int a;

        UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
        System.out.println("Allocating an integer: " + UsedMem/ 1024);
    }//main
}



class temp
{
    int a[] = new int[10];
    int i;

    temp()
    {
        for(i=0;i<10;i++)
        {
            a[i] = 10;
        }//for

    }//constructor


}//class

Вывод:

Total memory used before execution : 1599
Total memory used after  execution of 1 constructor: 2048
Total memory used after  execution of 10 constructor: 2048
Total memory used after  execution of 10 constructor: 2048
Allocating an integer: 2048

Этот код не выделяет никакой дополнительной памяти.

Не могли бы вы помочь? Мы должны создать массив объектов

// Мое предложение должно быть таким:

Socket serverClient=server.accept();
            Threads t[i] = new Threads(serverclient)

// оригинальный код

Socket serverClient=server.accept();
            Threads t = new Threads(serverclient)

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...