ubuntuusers.de

Javaprogramm sehr sehr langsam

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Pumpkin

Anmeldungsdatum:
2. Dezember 2006

Beiträge: 170

Hallo,

ich benutze häufig ein bestimmtes Javaprogramm und es ist immer sehr sehr sehr langsam. Wenn ein Menü öffnen will passiert erstmal gar nichts, nach mehreren Sekunden kommt es dann vielleicht. Auch ansonsten reagiert es auf Eingaben von meiner Seite immer mit mehreren Sekunden verzögerung und ich habe den Eindruck, dass es auch den Rest des Rechners beeinflusst. Hier meine Version:

max@max-laptop:~$ java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu7)
OpenJDK Client VM (build 14.0-b08, mixed mode, sharing)

Was kann ich machen, damit es schneller ist? Achja, mit dem Programm lade ich Dateien runter. Kann es möglicherweise auch sein, dass mein Rechner mit Dateioperationen so sehr beschäftigt ist, dass er dadurch auch langsamer wird?

Danke für Hilfe

heart_disease

Avatar von heart_disease

Anmeldungsdatum:
30. Juni 2006

Beiträge: 132

Oh, du hast das OpenJDK installiert. So sehr ich für OpenSource-Software bin, das JDK bzw. JRE von Sun ist die einzige vernünftige Java-Implementierung die ich kenne! Deinstalliere ALLE Pakete welche mit OpenJDK in Verbindung stehen und installier dir das Paket sun-java6-jre. Eventuell vorher nochmal neu starten und alles sollte laufen wie gewünscht.

Pumpkin

(Themenstarter)

Anmeldungsdatum:
2. Dezember 2006

Beiträge: 170

Ja, hab ich gemacht und jetzt flitzt alles, vielen Dank 😀

jokill

Anmeldungsdatum:
11. Juni 2008

Beiträge: 75

Danke sehr!!! Hat bei mir auch geholfen!

colombo1980

Avatar von colombo1980

Anmeldungsdatum:
23. September 2008

Beiträge: 1286

DAS wars also! Benutze den JDownloader - jetzt auch ohne Qualen! Danke für den Tipp.

Edit: Naja, auf dem anderen Rechner sorgt das für einen unbrauchbares X - "ganz toll". 🙄

shuthichi

Anmeldungsdatum:
22. Januar 2009

Beiträge: 58

Hallo zusammen,

ich habe momentan das gleiche Problem. Wenn ich z.B. mit Visual Paradigm arbeite und ein Diagram mal etwas größer wird dauert jede Änderung teilweise über 10 Sekunden. In der Zeit geht dann garnichts. Ähnliche Phänomene in Eclipse - Momentan (ZK Studio Plugin). Das Arbeiten wird so wirklich zu Qual.

Verwende Ubuntu 9.10

niko@nik-thinkpad:~$ java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) Server VM (build 14.1-b02, mixed mode)

Hat mir jemand nen Tip für das Problem?

axel.niedenhoff

Anmeldungsdatum:
9. November 2009

Beiträge: 7

Wenn Du den Aufruf der Anwendung modifizieren kannst (also das Kommando, mit dem die Java-VM gestartet wird), kannst Du versuchen, Optionen mitzugeben. Bei der Arbeit mit Desktop-Anwendungen könnte es zum Beispiel helfen, die VM in den Client-Modus zu zwingen. Dies wird durch den Schalter -client erreicht. Sehr wahrscheinlich enthält die Kommandozeile einen Parameter -jar. Dann kommt die Option -client vor diesen Parameter.

shuthichi

Anmeldungsdatum:
22. Januar 2009

Beiträge: 58

Hallo Axel,

ich habe bereits mit diesen Java Parametern experimentiert:

eclipse -Xms128M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M

leider hat sich keine Besserung eingestellt. Auch wenn ich ein -client anhänge tut sich leider nichts.

axel.niedenhoff

Anmeldungsdatum:
9. November 2009

Beiträge: 7

Dann wäre hier noch ein möglicher Griff in die Trickkiste (sprich: ubuntuusers-Wiki 😉 ): die Option -Dsun.java2d.opengl=true

shuthichi

Anmeldungsdatum:
22. Januar 2009

Beiträge: 58

Habe ich grade auch mal getestet. Ich habe das aufrufende Script mal um den Parameter erweitert. Leider genau so lahm wie vorher. 😢

Meine Änderung in der 5.ten Zeile. Das sollte doch so passen, oder mach ich was falsch?

#! /bin/sh

# Uncomment the following line to override the JVM search sequence
# INSTALL4J_JAVA_HOME_OVERRIDE=
# Uncomment the following line to add additional VM parameters
INSTALL4J_ADD_VM_PARAMS= -Dsun.java2d.opengl=true

read_db_entry() {
  if [ -n "$INSTALL4J_NO_DB" ]; then
    return 1
  fi
  db_file=$HOME/.install4j
  if [ ! -f "$db_file" ]; then
    return 1
  fi
  if [ ! -x "$java_exc" ]; then
    return 1
  fi
  found=1
  exec 7< $db_file
  while read r_type r_dir r_ver_major r_ver_minor r_ver_micro r_ver_patch<&7; do
    if [ "$r_type" = "JRE_VERSION" ]; then
      if [ "$r_dir" = "$test_dir" ]; then
        ver_major=$r_ver_major
        ver_minor=$r_ver_minor
        ver_micro=$r_ver_micro
        ver_patch=$r_ver_patch
        found=0
        break
      fi
    fi
  done
  exec 7<&-

  return $found
}

create_db_entry() {
  tested_jvm=true
  echo testing JVM in $test_dir ...
  version_output=`"$bin_dir/java" -version 2>&1`
  is_gcj=`expr "$version_output" : '.*gcj'`
  if [ "$is_gcj" = "0" ]; then
    java_version=`expr "$version_output" : '.*"\(.*\)".*'`
    ver_major=`expr "$java_version" : '\([0-9][0-9]*\)\..*'`
    ver_minor=`expr "$java_version" : '[0-9][0-9]*\.\([0-9][0-9]*\)\..*'`
    ver_micro=`expr "$java_version" : '[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*'`
    ver_patch=`expr "$java_version" : '.*_\(.*\)'`
  fi
  if [ "$ver_patch" = "" ]; then
    ver_patch=0
  fi
  if [ -n "$INSTALL4J_NO_DB" ]; then
    return
  fi
  db_new_file=${db_file}_new
  if [ -f "$db_file" ]; then
    awk '$1 != "'"$test_dir"'" {print $0}' $db_file > $db_new_file
    rm $db_file
    mv $db_new_file $db_file
  fi
  dir_escaped=`echo "$test_dir" | sed -e 's/ /\\\\ /g'`
  echo "JRE_VERSION	$dir_escaped	$ver_major	$ver_minor	$ver_micro	$ver_patch" >> $db_file
}

test_jvm() {
  tested_jvm=na
  test_dir=$1
  bin_dir=$test_dir/bin
  java_exc=$bin_dir/java
  if [ -z "$test_dir" ] || [ ! -d "$bin_dir" ] || [ ! -f "$java_exc" ] || [ ! -x "$java_exc" ]; then
    return
  fi

  tested_jvm=false
  read_db_entry || create_db_entry

  if [ "$ver_major" = "" ]; then
    return;
  fi
  if [ "$ver_major" -lt "1" ]; then
    return;
  elif [ "$ver_major" -eq "1" ]; then
    if [ "$ver_minor" -lt "4" ]; then
      return;
    fi
  fi

  if [ "$ver_major" = "" ]; then
    return;
  fi
  app_java_home=$test_dir
}

add_class_path() {
  if [ -n "$1" ] && [ `expr "$1" : '.*\*'` -eq "0" ]; then
    local_classpath="$local_classpath${local_classpath:+:}$1"
  fi
}

old_pwd=`pwd`

progname=`basename "$0"`
linkdir=`dirname "$0"`

cd "$linkdir"
prg="$progname"

while [ -h "$prg" ] ; do
  ls=`ls -ld "$prg"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '.*/.*' > /dev/null; then
    prg="$link"
  else
    prg="`dirname $prg`/$link"
  fi
done

prg_dir=`dirname "$prg"`
progname=`basename "$prg"`
cd "$prg_dir"
prg_dir=`pwd`
app_home=../
cd "$app_home"
app_home=`pwd`
bundled_jre_home="$app_home/jre"

if [ "__i4j_lang_restart" = "$1" ]; then
  cd "$old_pwd"
else
cd "$prg_dir"/../bin

fi
if [ ! "__i4j_lang_restart" = "$1" ]; then
if [ -f "$bundled_jre_home/lib/rt.jar.pack" ]; then
  old_pwd200=`pwd`
  cd "$bundled_jre_home"
  echo "Preparing JRE ..."
  jar_files="lib/rt.jar lib/charsets.jar lib/plugin.jar lib/deploy.jar lib/ext/localedata.jar lib/jsse.jar"
  for jar_file in $jar_files
  do
    if [ -f "${jar_file}.pack" ]; then
      bin/unpack200 -r ${jar_file}.pack $jar_file

      if [ $? -ne 0 ]; then
        echo "Error unpacking jar files. Aborting."
        echo "You might need administrative priviledges for this operation."
exit 1
      fi
    fi
  done
  cd "$old_pwd200"
fi
fi
if [ -z "$app_java_home" ]; then
  test_jvm $INSTALL4J_JAVA_HOME_OVERRIDE
fi

if [ -z "$app_java_home" ]; then
if [ -f "$app_home/.install4j/pref_jre.cfg" ]; then
    read file_jvm_home < "$app_home/.install4j/pref_jre.cfg"
    test_jvm "$file_jvm_home"
    if [ -z "$app_java_home" ] && [ $tested_jvm = "false" ]; then
        rm $HOME/.install4j
        test_jvm "$file_jvm_home"
    fi
fi
fi

if [ -z "$app_java_home" ]; then
  test_jvm "$app_home/jre"
  if [ -z "$app_java_home" ] && [ $tested_jvm = "false" ]; then
    rm $HOME/.install4j
    test_jvm "$app_home/jre"
  fi
fi

if [ -z "$app_java_home" ]; then
  path_java=`which java 2> /dev/null`
  path_java_home=`expr "$path_java" : '\(.*\)/bin/java$'`
  test_jvm $path_java_home
fi


if [ -z "$app_java_home" ]; then
  common_jvm_locations="/opt/i4j_jres/* /usr/local/i4j_jres/* $HOME/.i4j_jres/* /usr/bin/java* /usr/bin/jdk* /usr/bin/jre* /usr/bin/j2*re* /usr/bin/j2sdk* /usr/java* /usr/jdk* /usr/jre* /usr/j2*re* /usr/j2sdk* /usr/java/j2*re* /usr/java/j2sdk* /opt/java* /usr/java/jdk* /usr/java/jre* /usr/lib/java/jre /usr/local/java* /usr/local/jdk* /usr/local/jre* /usr/local/j2*re* /usr/local/j2sdk* /usr/jdk/java* /usr/jdk/jdk* /usr/jdk/jre* /usr/jdk/j2*re* /usr/jdk/j2sdk* /usr/lib/java* /usr/lib/jdk* /usr/lib/jre* /usr/lib/j2*re* /usr/lib/j2sdk*"
  for current_location in $common_jvm_locations
  do
if [ -z "$app_java_home" ]; then
  test_jvm $current_location
fi

  done
fi

if [ -z "$app_java_home" ]; then
  test_jvm $JAVA_HOME
fi

if [ -z "$app_java_home" ]; then
  test_jvm $JDK_HOME
fi

if [ -z "$app_java_home" ]; then
  test_jvm $INSTALL4J_JAVA_HOME
fi

if [ -z "$app_java_home" ]; then
if [ -f "$app_home/.install4j/inst_jre.cfg" ]; then
    read file_jvm_home < "$app_home/.install4j/inst_jre.cfg"
    test_jvm "$file_jvm_home"
    if [ -z "$app_java_home" ] && [ $tested_jvm = "false" ]; then
        rm $HOME/.install4j
        test_jvm "$file_jvm_home"
    fi
fi
fi

if [ -z "$app_java_home" ]; then
  echo No suitable Java Virtual Machine could be found on your system.
  echo The version of the JVM must be at least 1.4.
  echo Please define INSTALL4J_JAVA_HOME to point to a suitable JVM.
  echo You can also try to delete the JVM cache file $HOME/.install4j
exit 83
fi


i4j_classpath="$app_home/.install4j/i4jruntime.jar"
local_classpath=""
add_class_path "$i4j_classpath"
add_class_path "$app_home/lib/vpplatform.jar"
add_class_path "$app_home/lib/winpack.jar"
add_class_path "$app_home/lib/jniwrap.jar"
add_class_path "$app_home/lib/jh.jar"
add_class_path "$app_home/lib/vpuml-help.jar"
add_class_path "$app_home/lib/xalan.jar"
add_class_path "$app_home/lib/lib01.jar"
add_class_path "$app_home/lib/lib02.jar"
add_class_path "$app_home/lib/lib03.jar"
add_class_path "$app_home/lib/lib04.jar"
add_class_path "$app_home/lib/lib05.jar"
add_class_path "$app_home/lib/lib06.jar"
add_class_path "$app_home/lib/lib07.jar"
add_class_path "$app_home/lib/lib08.jar"
add_class_path "$app_home/lib/lib09.jar"
add_class_path "$app_home/lib/lib10.jar"
add_class_path "$app_home/ormlib/orm.jar"
add_class_path "$app_home/ormlib/orm-core.jar"
add_class_path "$app_home/ormlib/antlr.jar"
add_class_path "$app_home/ormlib/asm.jar"
add_class_path "$app_home/ormlib/asm-attrs.jar"
add_class_path "$app_home/ormlib/c3p0.jar"
add_class_path "$app_home/ormlib/cglib.jar"
add_class_path "$app_home/ormlib/commons-collections.jar"
add_class_path "$app_home/ormlib/jdbc2_0-stdext.jar"
add_class_path "$app_home/ormlib/jta.jar"
add_class_path "$app_home/ormlib/log4j.jar"

vmoptions_val=""
vmoptions_file="$prg_dir/$progname.vmoptions"
if [ -r "$vmoptions_file" ]; then
  exec 8< "$vmoptions_file"
  while read cur_option<&8; do
    is_comment=`expr "$cur_option" : ' *#.*'`
    if [ "$is_comment" = "0" ]; then 
      vmo_classpath=`expr "$cur_option" : ' *-classpath \(.*\)'`
      vmo_classpath_a=`expr "$cur_option" : ' *-classpath/a \(.*\)'`
      vmo_classpath_p=`expr "$cur_option" : ' *-classpath/p \(.*\)'`
      if [ ! "$vmo_classpath" = "" ]; then
        local_classpath="$i4j_classpath:$vmo_classpath"
      elif [ ! "$vmo_classpath_a" = "" ]; then
        local_classpath="${local_classpath}:${vmo_classpath_a}"
      elif [ ! "$vmo_classpath_p" = "" ]; then
        local_classpath="${vmo_classpath_p}:${local_classpath}"
      else
        vmoptions_val="$vmoptions_val $cur_option"
      fi
    fi
  done
  exec 8<&-
fi
INSTALL4J_ADD_VM_PARAMS="$INSTALL4J_ADD_VM_PARAMS $vmoptions_val"


echo "$app_java_home/bin/java" -Dinstall4j.jvmDir="$app_java_home" -Dexe4j.moduleName="$prg_dir/$progname" -Xmx512m -Xms256m -XX:MaxPermSize=128m  "-Dsun.java2d.noddraw=true" $INSTALL4J_ADD_VM_PARAMS -classpath "$local_classpath" com.install4j.runtime.Launcher launch RV true false "$prg_dir/error.log" "" true true false "" true true 0 0 "" 20 20 "Arial" "0,0,0" 8 500 "version 4.0" 20 40 "Arial" "0,0,0" 8 500 -1  "$@"




exit $?

axel.niedenhoff

Anmeldungsdatum:
9. November 2009

Beiträge: 7

Da fällt mir momentan nur noch ein, nach dem Speicher zu sehen. In der Einstellung, die im Startskript steht, kann die Anwendung auf bis zu 512 MB Heap-Speicher anwachsen. Dieser Speicher muss dann aber auch physisch zur Verfügung stehen, sonst fängt das Betriebssystem an, Teile des Speichers auf Platte auszulagern – und das kann richtig langsam werden. Du könntest also versuchen, mal andere Anwendungen zu schließen, bevor Du die Java-Anwendung startest, um Speicher freizuräumen. Eventuell ist es auch möglich den Wert bei der Option -Xmx zu reduzieren, um Java zu zwingen, mit weniger Speicher auszukommen. Das funktioniert aber nur so lange, wie die Anwendung mit der reduzierten Speichermenge auch leben kann.

shuthichi

Anmeldungsdatum:
22. Januar 2009

Beiträge: 58

Ich habe 3 GB RAM. Bei jeder Aktion die ich in Eclipse oder VP ausführe steigt die Prozessorlast auf min. 50%. Und dort bleibt sie dann für 5 oder 10 Sek. stehen. Auslagern tut der glaub nix.

Antworten |