Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 параметры запуска JVM  [new]
craftyman
Member

Откуда:
Сообщений: 169
Всем привет!
Прошу особо не пинать, т.к. пока только разбираюсь с явой :-)

Подскажите пожалуйста, где указываются параметры запуска виртуальной Java-машины под Oracle?
Так полагаю, что это какой-нить батник, типа loadjava.bat?

Если конкретнее, то нужно прописать параметры:
-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
23 июн 08, 17:18    [5835715]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
TiG
Member

Откуда:
Сообщений: 780
JAVA_POOL_SIZE если не используется Automatic Shared Memory Management, иначе см. SGA_TARGET по второму линку
23 июн 08, 17:45    [5835939]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
craftyman
Member

Откуда:
Сообщений: 169
2 TiG:
спасибо большое, это уже настраивал, но не помогло...

проблема состоит в следующем: в процессе выполнения хранимки на Java выскакивает ошибка java.lang.OutOfMemoryError.
Увеличили JAVA_POOL_SIZE (до 1Гб), но проблема не исчезла. Выдает подобное сообщение:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.OutOfMemoryError
ORA-04030: out of process memory when trying to allocate 21233972 bytes (joxp heap,f:OldSpace)
ORA-06512: at "JAVA_TEST", line 3
ORA-06512: at line 7
Как видим, рушится при попытке расширения до 21Мб.

Гуляния по форуму привели к совету поиграться с параметрами, упомянутыми в начале топика.
Только вот что с ними делать ума не приложу...
23 июн 08, 17:56    [5836061]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
craftyman
Как видим, рушится при попытке расширения до 21Мб.
...
Только вот что с ними делать ума не приложу...

Не до 21 Мб, а на 21 Мб.

Где-то у вас течет, и утекает весь гигабайт. Наверное гдето бесконечная рекурсия...
23 июн 08, 19:15    [5836548]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
craftyman
Member

Откуда:
Сообщений: 169
wildwind
Не до 21 Мб, а на 21 Мб.

да, спасибо, был невнимателен =)
насчет утечки памяти - возможно, но насколько я понимаю ява-машина должна сама управлять сбором мусора.
в самой программе в цикле читаются файлы из директории, размер файлов от 1-5 Мб. похоже на то, что память после чтения не освобождается. а почему не освобождается - не пойму...
23 июн 08, 19:23    [5836583]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
craftyman
Member

Откуда:
Сообщений: 169
причем, если запустить данную программу из IDE, то все отрабатывает как надо. профайлер показывает, что память никуда не утекает и своевременно освобождается, а вот из оракла работать никак не хочет...

вот, текст самой функции:
public static void main(String[] args) throws IOException  {
	
        String f_in, dir_in;
        int f_cnt;
                
        // исходная директория, где хранятся необработанные файлы
        dir_in = "c:/pics/original/";

        // получаем список файлов из директории для обработки
        File[] f_lst = getSomeTypedFiles(dir_in);
        
        // количество файлов для обработки
        f_cnt = f_lst.length;
  
  
        for(int i=0; i<f_cnt; i++)   {
            
            f_in = f_lst[i].getName();            
      
            BufferedImage  in = ImageIO.read(new File(dir_in + f_in));
        }
}
23 июн 08, 19:43    [5836641]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
TiG
JAVA_POOL_SIZE если не используется Automatic Shared Memory Management, иначе см. SGA_TARGET по второму линку

java_pool_size ~аналог -XX:MaxPermSize.
по сабжу: см notes
23 июн 08, 19:59    [5836692]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
TiG
Member

Откуда:
Сообщений: 780
Timm
TiG
JAVA_POOL_SIZE если не используется Automatic Shared Memory Management, иначе см. SGA_TARGET по второму линку

java_pool_size ~аналог -XX:MaxPermSize.
по сабжу: см notes

согласен
в дополнение, pga_aggregate_target (при workarea_size_policy = AUTO) - это память на все сессии, причем размер рабочей области для каждого серверного процесса ограничен вот по таким правилам (т.е. всю свободную PGA одному процессу оракл никогда не отдаст), ну а полученный макс.размер еще надо скорректировать на размер использованной памяти под хранение состояния сессии, sql workarea, короче проще помониторить проблемную сессию, например так:
select *
from v$sesstat s, v$statname n
where s.statistic# = n.statistic#
  and(name like '%pga%' or name like '%java%')
  and sid = :sid
24 июн 08, 11:26    [5838592]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
craftyman
в самой программе в цикле читаются файлы из директории, размер файлов от 1-5 Мб. похоже на то, что память после чтения не освобождается. а почему не освобождается - не пойму...

Есть предположение, что будет освобождаться по завершении вызова. Попробуйте читать по одному файлу за вызов, например из джоба.

И версию, кстати, не указали.
24 июн 08, 12:42    [5839343]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
craftyman
Member

Откуда:
Сообщений: 169
wildwind
И версию, кстати, не указали.

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
версия JVM - 1.4.2

пробовал менять значения java_pool_size и pga_aggregate_target.
файлов обрабатывается значительно больше, но так же рушится при попытке расширении пула.
насчет чтения по одному файлу - попробую, доложу о результатах.
24 июн 08, 13:15    [5839608]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
Давай текст процедуры полностью.
24 июн 08, 13:24    [5839680]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
craftyman
Member

Откуда:
Сообщений: 169
Timm
Давай текст процедуры полностью.

Java-процедура (не обращайте внимания на абсурдность самого кода, т.к. сама процедура на самом деле будет состоять не только из чтения файлов в цикле :-) )
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "JavaTest" AS
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.File;

public class JavaTest {
    
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException  {
	
        String f_in, dir_in;
        int f_cnt;
                
        // исходная директория, где хранятся необработанные файлы
        dir_in = "c:/pics/original/";

        // получаем список файлов из директории для обработки
        File[] f_lst = getSomeTypedFiles(dir_in);
        
        // количество файлов для обработки
        f_cnt = f_lst.length;
    
        for(int i=0; i<f_cnt; i++)   {
            
            f_in = f_lst[i].getName();            
      
            BufferedImage  in = ImageIO.read(new File(dir_in + f_in));
        }        
    }   
    
    static File[] getSomeTypedFiles (String directory) {
    /**
     * Метод возвращает список файлов из directory c расширением type 
     */
        File dir = new File(directory); 
        FilenameFilter filter = new FilenameFilter() {
            public boolean accept(File dir, String name) {
                return name.toUpperCase().endsWith("JPG");
            }
        };
        return dir.listFiles(filter);
    }
}
/

пакет для вызова
CREATE OR REPLACE PACKAGE JAVATEST AS

PROCEDURE main(Param1 VARCHAR2) 
AS
  LANGUAGE java 
    NAME 'JavaTest.main(java.lang.String[])';

end;
/

пример вызова
DECLARE 
  PARAM1 VARCHAR2(200);

BEGIN 
  PARAM1 := NULL;

  JAVATEST.MAIN ( PARAM1 );
END; 
24 июн 08, 13:45    [5839854]     Ответить | Цитировать Сообщить модератору
 Re: параметры запуска JVM  [new]
craftyman
Member

Откуда:
Сообщений: 169
wildwind
Попробуйте читать по одному файлу за вызов

не дало нужного результата =(
24 июн 08, 15:21    [5840566]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить