Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Экземпляры синглтона / 10 сообщений из 10, страница 1 из 1
14.06.2015, 17:51
    #38983499
giigro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
Привет всем!

Написал такой вот классец (переменная testNum при создании экземпляра синглтона = 0, метод incTestNum() делает testNum++)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class SingletonTest {
    public static void main(String[] args) {
        Singleton inst = Singleton.getInstance();
        inst.printTestNum();
        inst.incTestNum(); 
        inst.printTestNum();  // тут есть точка останова
    }
}


Я останавливаюсь на указанной строке, затем выполняю JAR с этим же классом, он мне выдает 0, 1 . Объясните, почему не 1, 2 , ведь у нас один экземпляр на всю.... на всю чего? JWM?
PS Про classloader'ы читал
...
Рейтинг: 0 / 0
14.06.2015, 18:05
    #38983503
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
Потому что JVM не живет своей жизнью в системе. Она запускается когда вы запускаете jar и освобождает память, когда выполнение метода main() закончено и нет других работающих потоков.
...
Рейтинг: 0 / 0
14.06.2015, 18:30
    #38983511
giigro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
Когда у меня висит отладка, JVM работает и в её адресном пространстве уже есть экземпляр в данном случае. Нет?
...
Рейтинг: 0 / 0
14.06.2015, 18:45
    #38983517
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
Вам пытаются сказать, что если вы ставите точку останова в конце метода main, то JVM имеет полное право собрать весь мусор, который уже не нужен. Включая экземпляр вашего класса-одиночки.
...
Рейтинг: 0 / 0
14.06.2015, 18:48
    #38983518
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
giigroзатем выполняю JAR с этим же классомМожете с этого места по подробнее? Как выполняете и т.д?
...
Рейтинг: 0 / 0
14.06.2015, 18:56
    #38983521
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
Basil A. Sidorov,
тут гораздо проще - речь идет о 2-х несвязанных процессах, и обычные синглтоны для синхронизации тут не подходят. Для синхронизации 2-х jvm нужен уникальный ресурс на уровне ОС
...
Рейтинг: 0 / 0
14.06.2015, 19:01
    #38983525
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
giigroи в её адресном пространстве уже есть экземпляр в данном случае. Нет?
Нет. У двух JVM два разных адресных пространства.
...
Рейтинг: 0 / 0
14.06.2015, 19:02
    #38983527
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
То, что разные JVM работают в разных процессах - должно быть очевидно и поэтому я обоснованно предположил, что автор удивлён результатом перезапуска метода в рамках одной JVM.
...
Рейтинг: 0 / 0
14.06.2015, 19:28
    #38983541
yelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
giigroПривет всем!

Написал такой вот классец (переменная testNum при создании экземпляра синглтона = 0, метод incTestNum() делает testNum++)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class SingletonTest {
    public static void main(String[] args) {
        Singleton inst = Singleton.getInstance();
        inst.printTestNum();
        inst.incTestNum(); 
        inst.printTestNum();  // тут есть точка останова
    }
}


Я останавливаюсь на указанной строке, затем выполняю JAR с этим же классом, он мне выдает 0, 1 . Объясните, почему не 1, 2 , ведь у нас один экземпляр на всю.... на всю чего? JWM?
PS Про classloader'ы читал

Один экземпляр на одно работающее приложение.
В вашем случае работают два экземпляра вашего приложения в двух разных JVM.

А если, например, два экземпляра одного веб приложения в Томкэте (JVM одна и та же), то на каждый экземпляр приложения свой единственный экземпляр класса. Класслодеры у приложений разные.
...
Рейтинг: 0 / 0
15.06.2015, 13:38
    #38983941
giigro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляры синглтона
Спасибо всем ответившим! С вашей помощью разобрался.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Экземпляры синглтона / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]