Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маленький тест, :) 
:(
    Опции темы
neo03
Дата 10.8.2011, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



Не знаю, у кого что она выдала, а уменя : 
vasiliy@vasiliy-desktop:~$ java Test*
Exception in thread "main" java.lang.NoClassDefFoundError: Test/java
Caused by: java.lang.ClassNotFoundException: Test.java
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Test.java. Program will exit.

Как она у Вас что-то другое выдает, не понятно.
PM MAIL   Вверх
LSD
Дата 11.8.2011, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15709
Регистрация: 24.3.2004

Репутация: 209
Всего: 537



Между Test и * должен быть пробел.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
pathfinder
Дата 13.8.2011, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 3.3.2010

Репутация: 2
Всего: 10



Что выведится на экран и почему? 

Код

import java.util.ArrayList;
import java.util.List;

public class Vingrad {
    
    public static List<Vingrad> list = new ArrayList<Vingrad>();
    public static int identity = 0;
    
    public static void main(String[] args) {
        final int count = 3;
        
        // Инициализация ...
        for (int i=0; i<count; ++i) {
            try {
                new Vingrad();
            } catch (RuntimeException ex) { /* nothing */ }
        }
        
        // Вывод ...
        for (Vingrad v : list) {
            System.out.println(v);
        }
    }
    
    public Vingrad() {
        this.id = (identity++);
        
        list.add(this);
        
        throw new RuntimeException("Some error is occured.");
    }

    @Override
    public String toString() {
        return "Vingrad: id("+id+")";
    }
    
/* Data */
    private int id;
    
}

PM MAIL   Вверх
AlexeyVorotnikov
Дата 15.8.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



pathfinder, на первый взгляд должно вывестись
Код

Vingrad: id(0)
Vingrad: id(1)
Vingrad: id(2)


А вот если попробовать реально запустить... сейчас попробую.

Добавлено через 5 минут и 31 секунду
Собственно, при запуске программа работает как и было предсказано. smile


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
pathfinder
Дата 15.8.2011, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 3.3.2010

Репутация: 2
Всего: 10



AlexeyVorotnikov, как следствие название "конструктор объекта" не совсем коректно, ибо объект уже создан, в момент входа в "конструктор". Может лучше его называть "инициализатор объекта". Ну и следствие второе - в конструкторе нельзя устанавливать связи из внешних объектов на данный.
PM MAIL   Вверх
v2v
Дата 16.1.2012, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



Что будет выведено на экран?

Код

      Map m = new WeakHashMap();
        for (int i=0; i<100000; i++) {
            m.put(i,new Integer(i));
        }
        System.gc();
        Thread.sleep(5000); // ждём пока гц уж точно не будет вызван.
        System.out.println(m.size());


Это сообщение отредактировал(а) v2v - 16.1.2012, 18:10


--------------------
PM   Вверх
LSD
Дата 16.1.2012, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15709
Регистрация: 24.3.2004

Репутация: 209
Всего: 537



Можно вывести любое число от 1 до 100000 smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Dummy
Дата 16.1.2012, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 9
Всего: 19



128... Так и думал smile Но, строго говоря, да, тут на усмотрение GC. А еще зависит от того, как реализован autoboxing.

Это сообщение отредактировал(а) Dummy - 16.1.2012, 16:21
PM MAIL   Вверх
v2v
Дата 16.1.2012, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



Цитата(LSD @  16.1.2012,  16:03 Найти цитируемый пост)
Можно вывести любое число от 1 до 100000   

Вообще то я специально поставил большой слип дабы дать гарбадж коллектору отработать.
И множественные тесты показывают один и тот же результат.



--------------------
PM   Вверх
Dummy
Дата 16.1.2012, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 9
Всего: 19



Как я понимаю суть происходящего:

1. Предположим сначала, что System.gc() обязательно освободит память из-под всех недостижимых и слабо достижимых объектов
1.1. Если в реализации JVM все результаты автобоксинга int'ов остаются в кэше до конца жизни JVM и кэш реализован через сильные ссылки, то результат будет 128, т. к. все ключи от 0-127 всегда достижимы и не подпадают под сборку мусора.
1.2. Если же результаты автобоксинга лежат в кэше в виде слабых ссылок (т. е. кэшированные автобоксовые значения могут обновляться в течение жизни JVM), после первого же вызова System.gc() память из под них освободится, т. к. все значения 0-127 будут слабо достижимы.

2. Если теперь предположить, что System.gc() может привести к частичному освобождению недостижимых и слабо достижимых объектов, то выведенное значение может колебаться от 0 до 10000.

Более того, как следует из Java Language Specification, результат в 1.1 может быть и не 128, а больше, в зависимости от того, сколько автобоксовых значений данная реализация JVM кэширует.
PM MAIL   Вверх
jk1
Дата 16.1.2012, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

Если теперь предположить, что System.gc() может привести к частичному освобождению недостижимых и слабо достижимых объектов, то выведенное значение может колебаться от 0 до 10000.


Не думаю, что это так. System.gc() запускает полную сборку мусора по всей куче и все недостижимое или слабо достижимое будет переработано. Так что ответ будет конкретный, но может, в принципе, варьироваться между реализациями JVM.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
LSD
Дата 17.1.2012, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15709
Регистрация: 24.3.2004

Репутация: 209
Всего: 537



Цитата(v2v @  16.1.2012,  18:06 Найти цитируемый пост)
Вообще то я специально поставил большой слип дабы дать гарбадж коллектору отработать.И множественные тесты показывают один и тот же результат.

Запусти на JDK 7 с ключом:
Код

-Djava.lang.Integer.IntegerCache.high=4096

 smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
v2v
Дата 17.4.2012, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



Цитата

Запусти на JDK 7 с ключом:
Код

-Djava.lang.Integer.IntegerCache.high=4096

 smile
и вновь будет константный результат равен IntegerCache.high.
Гарбадж коллектор точная машина с довольно сложным для простого обывателя, но однозначным поведением, не надо приписывать ему чудес. 


Новый тест  - философский : "В поисках истины"

Код

        List a = Arrays.asList(1, 2);
        List b = new ArrayList();
        b.add(1); b.add(2);
        List c= new LinkedList();
        c.add(1); c.add(2);
        Set d = new HashSet();
        d.add(1); d.add(2);
        Set e = new TreeSet();
        e.add(1); e.add(2);
        System.out.print(a.equals(b));
        System.out.print(a.equals(c));
        System.out.print(a.equals(d));
        System.out.print(b.equals(c));
        System.out.print(d.equals(e));

Где либо будет истина?

Это сообщение отредактировал(а) v2v - 18.4.2012, 00:40


--------------------
PM   Вверх
LSD
Дата 18.4.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15709
Регистрация: 24.3.2004

Репутация: 209
Всего: 537



Цитата(v2v @  18.4.2012,  00:27 Найти цитируемый пост)
и вновь будет константный результат равен IntegerCache.high.

Цитата(LSD @  16.1.2012,  17:03 Найти цитируемый пост)
Можно вывести любое число от 1 до 100000



Цитата(v2v @  18.4.2012,  00:27 Найти цитируемый пост)
Гарбадж коллектор точная машина с довольно сложным для простого обывателя, но однозначным поведением, не надо приписывать ему чудес.

Рекомендую запускать тест с опцией -XX:-DisableExplicitGC чтобы получить больше фана smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
xoslv
Дата 11.11.2012, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



v2v, полагаю, что истина будет как минимум в трёх вариантах.
--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
Страницы: (80) « Первая ... 77 78 [79] 80 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1635 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.