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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заставить JVM максимально загружать процессор? jvm 
V
    Опции темы
cube
Дата 24.4.2008, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мое приложение работает локально, и не оперирует с большим количеством данных!
Выполнение программы проходит медленно, а процессор загружен всего на каких-то 15-20 процентов, почему? в приложении использую потоки выполнение которых не зависит друг от друга

Как повысить скорость выполнения моего приложения?
PM MAIL   Вверх
barin_Student
Дата 24.4.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

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



Может вы пишете на диск многа данных?

Точнее работаете с дисками , пишете и читаете в файлы? 

Это сообщение отредактировал(а) barin_Student - 24.4.2008, 16:46


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
LSD
Дата 24.4.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Значит где-то эти потоки простаивают, например на IO или синхронизации.


--------------------
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   Вверх
cube
Дата 25.4.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не я не работаю с дисками, количество данных не столь велико, сам java процесс занимает какихто 20 кб в оперативной памяти... из io ну я использую только вывод на экран sout...

Всеравно непонятно, почему jvm не забивает процессор максимально...
PM MAIL   Вверх
LSD
Дата 25.4.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(cube @  25.4.2008,  11:57 Найти цитируемый пост)
сам java процесс занимает какихто 20 кб в оперативной памяти...

Java не может занимать 20Кб, Hello World! занимает несколько мегабайт.


Цитата(cube @  25.4.2008,  11:57 Найти цитируемый пост)
из io ну я использую только вывод на экран sout...

Этого вполне достаточно.
Код

import java.util.Random;
import java.util.zip.Checksum;

public class Test
{
  public static void main(String[] args) throws Exception
  {
    byte[] data = new byte[1024 * 1024];
    new Random().nextBytes(data);

    CRC32 crc32 = new CRC32();
    while(true)
    {
      for(int i = 0; i < data.length; i++)
      {
        crc32.update(data[i]);
        System.out.println(i);
      }
      crc32.reset();
    }
  }

  public static class CRC32 implements Checksum
  {
    private static int[] crc_table = makeCrcTable();

    private int crc = 0;

    private static int[] makeCrcTable()
    {
      int[] crc_table = new int[256];
      for(int n = 0; n < 256; n++)
      {
        int c = n;
        for(int k = 8; --k >= 0;)
        {
          if((c & 1) != 0)
            c = 0xEDB88320 ^ (c >>> 1);
          else
            c = c >>> 1;
        }
        crc_table[n] = c;
      }
      return crc_table;
    }

    public long getValue()
    {
      return (long) crc & 0xFFFFFFFFL;
    }

    public void reset()
    {
      crc = 0;
    }

    public void update(int bval)
    {
      int c = ~crc;
      c = crc_table[(c ^ bval) & 0xFF] ^ (c >>> 8);
      crc = ~c;
    }

    public void update(byte[] buf, int off, int len)
    {
      int c = ~crc;
      while(--len >= 0)
        c = crc_table[(c ^ buf[off++]) & 0xFF] ^ (c >>> 8);
      crc = ~c;
    }

    public void update(byte[] buf)
    {
      update(buf, 0, buf.length);
    }
  }
}

загрузка 40-50%, но больше всего систему грузит csrss.exe, а не Java. Если System.out.println() убрать, то загрузка 50% и систему грузит Java.


--------------------
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   Вверх
cube
Дата 25.4.2008, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

сам java процесс занимает какихто 20 кб в оперативной памяти...


Цитата

Java не может занимать 20Кб, Hello World! занимает несколько мегабайт.


java процесс может занимать 20 кб в оперативной памяти!  smile открой таск менеджер если под виндой работаешь и убедись

Цитата

то загрузка 50% и систему грузит Java.


ну вот я и спрашиваю, почему jvm не загружает систему полностью? а только на 50%
и как можно управлять этим?
PM MAIL   Вверх
LSD
Дата 25.4.2008, 13:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(cube @  25.4.2008,  14:12 Найти цитируемый пост)
java процесс может занимать 20 кб в оперативной памяти!   открой таск менеджер если под виндой работаешь и убедись

Ты прав, все гораздо хуже. Написал тестик, вообще без кода, только Thread.sleep(), JDK 1.6 - 19.6Мб, JDK 1.5 - 12.9Мб.

Цитата(cube @  25.4.2008,  14:12 Найти цитируемый пост)
ну вот я и спрашиваю, почему jvm не загружает систему полностью? а только на 50%и как можно управлять этим?

1. Мой код на 50% грузит машину потому, что там один поток который грузит одно ядро на 100%, а таск менеджер показывает суммарную загрузку по всем ядрам.
2. JVM тут не причем, дело в твоем коде. Запусти этот тестик, и получишь загрузку 100%.
3. Без кода, остается только гадать по звездам и кофейной гуще.


--------------------
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   Вверх
cube
Дата 25.4.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(LSD @ 25.4.2008,  13:46)
Цитата(cube @  25.4.2008,  14:12 Найти цитируемый пост)
java процесс может занимать 20 кб в оперативной памяти!   открой таск менеджер если под виндой работаешь и убедись

Ты прав, все гораздо хуже. Написал тестик, вообще без кода, только Thread.sleep(), JDK 1.6 - 19.6Мб, JDK 1.5 - 12.9Мб.

Цитата(cube @  25.4.2008,  14:12 Найти цитируемый пост)
ну вот я и спрашиваю, почему jvm не загружает систему полностью? а только на 50%и как можно управлять этим?

1. Мой код на 50% грузит машину потому, что там один поток который грузит одно ядро на 100%, а таск менеджер показывает суммарную загрузку по всем ядрам.
2. JVM тут не причем, дело в твоем коде. Запусти этот тестик, и получишь загрузку 100%.
3. Без кода, остается только гадать по звездам и кофейной гуще.

Ах ты нехороший!  smile   smile 
А я что написал 20 кб? Ну подумаешь не заметил что это вовсе не килобайт, а мегабайт, и потом ты сам написал 
Цитата

Каждый может потупить немножко


 smile 
Спасибо за хороший пример! Я неогу отправить весь код сюда, с библиотеками, да и сам покапаю его! Спасибо еще раз!  smile 

Кто задет сюда, если есть 100 постов,  плиз добавьте ему репутации
PM MAIL   Вверх
barin_Student
Дата 25.4.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

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



Добавил.. smile 


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

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

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


 




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


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

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