powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Java 8 - уже не совсем Java?
25 сообщений из 448, страница 16 из 18
Java 8 - уже не совсем Java?
    #39205147
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никLeonid KudryavtsevВозможно, можно было бы на уровне VM сделать Thread кучи. Т.е. все объекты созданные в рамках Thread относятся к "своей" кучи.

Так оно так и работает насколько я себя помню, у каждого Thread есть свой TLAB(thread local allocation buffer)

thread local allocation buffer - для алоцирования
А Eden область и сборка мусора - общая. AFAIK
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39205151
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но нужно читать. Сейчас есть G1 коллектор, когда я разбирался - его еще не было. Т.ч. мои знания могут быть устаревшими.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39205157
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevthread local allocation buffer - для алоцирования
А Eden область и сборка мусора - общая. AFAIK

Не совсем понял, TLAB же выделяется в Eden, или ваша идея в том чтобы у каждого потока была та же куча только в миниатюре? Со своим eden и Old? И в чем профит?
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39205173
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никСо своим eden и Old?
ну я только о Eden говорил. Т.к. поделить Old будет значительно сложнее.

забыл никИ в чем профит?
много букв получится

Разные задачи/приложения/запросы - разные требования к памяти. А в JVM приходится грести все под одну гребенку. Или часть задач принудительно выносить в другую JVM, что бы свои настройки кучи дать.

HTTP сервер - хочется по максимому Eden и по минимому Old
Задачи вроде MemCache - наоборот

А когда и те и другие задачи начинают работает в рамках одной JVM, одного application server'а - помойка получается

IMHO & AFAIK
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39205746
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПо сути на уровне разработки дать больше инструментов для управления аллокацией.
Ну ты б еще выравнивание адресов и вообще структуры нормальные попросил. Это ж java - здесь такое просить странно. :)
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39205852
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевmaytonПо сути на уровне разработки дать больше инструментов для управления аллокацией.
Ну ты б еще выравнивание адресов и вообще структуры нормальные попросил. Это ж java - здесь такое просить странно. :)
Страницу или две назад именно это и просили :-)
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39205924
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевmaytonПо сути на уровне разработки дать больше инструментов для управления аллокацией.
Ну ты б еще выравнивание адресов и вообще структуры нормальные попросил. Это ж java - здесь такое просить странно. :)
На некоторых собеседованиях на Java-dev спрашивают про размер Object.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39205931
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНа некоторых собеседованиях на Java-dev спрашивают про размер Object.
И какой у него размер?
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39206129
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елизаров бухтит что-то про intern(). А я вот щас такой код пишу. Страна - регион - город -- справочники из гео
глассификатора IP-blocks (где-то я выше тему поднимал).

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
@Immutable
public final class Location {

    final int    locId;
    final String country;
    final String region;
    final String city;
    final String postalCode;
    final double latitude;
    final double longitude;
    final String dmaCode;
    final String areaCode;

    public Location(@Nonnull String locId, String country, String region, String city, String postalCode, 
                    @Nonnull String latitude, 
                    @Nonnull String longitude, String dmaCode, String areaCode) {
        this.locId      = Integer.valueOf(locId);
        // TODO: Check intern() for effectivity
        this.country    = country.intern();
        this.region     = region.intern();
        this.city       = city.intern();
        this.postalCode = postalCode;
        this.latitude   = Double.parseDouble(latitude);
        this.longitude  = Double.parseDouble(longitude);
        this.dmaCode    = dmaCode;
        this.areaCode   = areaCode;
    }
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39206138
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня примерно такие же справочники, при этом везде коды 2-3 латинские заглавные буквы

Я вместо строк банально коды в int перегнал, т.ч. по программе везде int'ы гуляют.

А в первый байт закодировал еще и тип справочника. Т.к. иногда коды из разных справочников совпадают, т.ч. я еще всегда знаю, не перепутал ли я справочники.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39206142
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevmaytonНа некоторых собеседованиях на Java-dev спрашивают про размер Object.
И какой у него размер?
Это очень хороший вопрос бро. Спека пишет следующее

JVM 8 spec 2.7 Representation of Objects

The Java Virtual Machine does not mandate any particular internal structure for objects.

In some of Oracle’s implementations of the Java Virtual Machine, a reference to a class instance is a pointer to a handle that is itself a pair of pointers: one to a table containing the methods of the object and a pointer to the Class object that represents the type of the object, and the other to the memory allocated from the heap for the object data.

Я часто ошибался в ответах на подобные вопросы и прошу коллег сначала высказать свои
ответы. А я подом че нить добавлю или поддакну.

С уважением.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39206145
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно было бы конечно и интернировать... Но я еще дальше пошел. У меня обрабатываются маршруты "из-в", если я все такие пары буду интернировать - боюсь память сразу же закончится. А так long - два int.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39206274
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevmaytonНа некоторых собеседованиях на Java-dev спрашивают про размер Object.
И какой у него размер?

http://openjdk.java.net/projects/code-tools/jol/

Зависит от архитектуры. Или 8 байт на x32, или 12(16 с учетом выравнивания) байт на х64.
На арм проверить нечем, но скорей всего то же самое.

Там еще по идее можно глянуть спеку jvm. Там может что-то быть по теме, т.к. для jni это может быть нужно и оно может быть стандартизовано. Но спеку я не смотрел.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39246470
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже сейчас на стримах задачку делал. Жесть какая-то. Пока непривычно.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39246477
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне интересны стримы в части упрощения работы с БД. Например в jOOQ есть расширение jOO(Lamdba)
для поддержки функций высокого порядка при работе с БД. Тюториалы и примеры завлекают
но как щас прикрутить это к своему проекту - ХЗ. Сложно пока. Особенно в части выброса
исключений.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250098
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmitriycheMasterZiv,

Если уж использовать Java 8, то только на полную катушку
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;

import static java.lang.System.out;

public class Main {

    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader("text.txt"))) {
            printDictionary("words",
                    reader.lines()
                            .filter(line -> !line.isEmpty())
                            .flatMap(line -> Arrays.stream(line.split(WORD_DELIMITERS_REGEX)))
                            .filter(word -> !word.isEmpty())
                            .map(String::toLowerCase)
                            .collect(
                                    Collectors.toMap(
                                            word -> word,
                                            word -> 1,
                                            (count1, count2) -> count1 + count2
                                    )
                            )
            );
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}



Какой ужасный, нечитаемый, неотлаживаемый код! Я в шоке! Ниже я написал аналог с итерациями, а ещё ниже более менее читаемый код с оперциями над коллекциями.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
            Map<String, Integer> dictionary = new HashMap<>();
            for (String line: Files.readAllLines(Paths.get("text.txt"))) {
                if (!line.isEmpty()) {
                    for (String token : line.split(WORD_DELIMITERS_REGEX)) {
                        if (!token.isEmpty()) {
                            token = token.toLowerCase();
                            dictionary.put(token, dictionary.getOrDefault(token, 1));
                        }
                    }
                }
            }




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
                Stream<String> fileLines = Files.lines(Paths.get("text.txt")); // for line: Files.readAllLines
                Stream<String> notEmptyLines = fileLines.filter(s -> !s.isEmpty()); // if (!line.isEmpty()) {
                Stream<String> allTokens = notEmptyLines.flatMap((String s) -> Arrays.stream(s.split(WORD_DELIMITERS_REGEX)));// for token: line.split
                Stream<String> notEmptyTokens = allTokens.filter(s -> !s.isEmpty()); // if !token.isEmpty
                Stream<String> lowercasedTokens = notEmptyTokens.map(String::toLowerCase); // token = token.toLowerCase()
                Map<String, Integer> dictionary = lowercasedTokens.collect( // dictionary = new HashMap<>()
                        Collectors.toMap(k -> (String) k, k -> 1, (Integer v1, Integer v2) -> v1 + v2) // dictionary.put
                );



Как мы видем итерации соотносятся с операциями над коллекциями один-к-одному. Отсюда вопрос: а нахрена народ то кипятком писает от нового Stream api. Никакой экономии места он не даёт.

Он мог бы улучшить читаемость если бы Оракл не реализовала этот API так по-дебильному: надо коллекцию превращать в стрим, а потом собирать коллектором. При этом итерции по стриму не работают. Для пользователей нормальных языков это выглядит полным безумием. Кроме того: модифицировать в лямбдах ничего нельзя, даже простейший счётчик не вставишь.

Ну и нафига нужен этот маразм?? Уж лучше его не было бы! Переходите уже на груви/котлин и не мучайте уже этот труп.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250103
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тешу себя надеждой что будет преимущество в части Parallelism.

https://docs.oracle.com/javase/tutorial/collections/streams/parallelism.html

Чуть позже если найду - приведу пример где это явно имело преимущество
(Apache Spark). Но там была инфраструктура вычислительного кластера.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250175
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ужас смотрю на ява8 - такое ощущение что это вообще не ява.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250178
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ява - это мотоцикл. Смотри... завалят на собесе на 1-м вопросе
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250217
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯва - это мотоцикл. Смотри... завалят на собесе на 1-м вопросе
не понял
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250239
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый вопрос - что такое Ява? :)
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250260
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПервый вопрос - что такое Ява? :)
язык программирования. только давай вот без американизмов. :) ты же кафе говоришь а не кэффэй )) ну или аэропорт а не эйрпоат.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250263
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTmaytonПервый вопрос - что такое Ява? :)
язык программирования. только давай вот без американизмов. :) ты же кафе говоришь а не кэффэй )) ну или аэропорт а не эйрпоат.
Щас еще минус 1 балл будет! Не спорь с интервьюером. Хочешь работать в команде - будь добр
перенимай терминологию.

Но это так... шутка. Но за каждой шуткой есть....
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250266
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ой, я забыл что я на собесе. да, коненчо же вы правы - джава это джава а ява - это остров такой. и сорт кофе кажется. а еще мот о котором мой дедушка мечтал.
...
Рейтинг: 0 / 0
Java 8 - уже не совсем Java?
    #39250274
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще чай такой был, зеленый. И вполне себе неплохой )))
...
Рейтинг: 0 / 0
25 сообщений из 448, страница 16 из 18
Форумы / Java [игнор отключен] [закрыт для гостей] / Java 8 - уже не совсем Java?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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