Java Speicher Probleme java heap space mit Layout

  • Antworten:9
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 35

28.09.2015, 19:08:35 via Website

Hallo zusammen

Bin gerade wieder dabei, auf einem einzigen Layout zu Demo-Zwecken die wichtigsten Views und Widgets zu implementieren. Dazu verwende ich ein ScrollView. Leider steigt das System schon nach 5-6 Views aus (Systemhänger) mit der Meldung "Java heap space", offentsichtlich ein Speicherproblem, dass die interne Speicherbereinigung GC von Java nicht lösen kann. Dabei habe ich wirklich nur völlig harmlose Views implementiert. Das größte war ein ImageView mit einem Bild von 16KB. Ich muss auch Kompatibilitätsgründen Eclipse mit Java SDK verwenden. An meinem Hardwarespeicher liegt es definitiv! nicht. Auch ein Test auf einem anderen Rechner erbrachte das gleiche Fehlerverhalten. Nach vielen Stunden des Testens in allen Varianten der Layoutgestaltung (ohne positives Ergebnis) habe ich als Notlösung 6 getrennte Layouts mit jeweils 4-5 Views erzeugt - mehr geht einfach nicht.
Hat jemand einen Rat für mich?
vielen Dank
Josef
ps. habe diese Thread schon vor 2-3 Tagen geschrieben, wurde auch angezeigt, ist aber irgendwie verschwunden!?

Antworten
  • Forum-Beiträge: 53

28.09.2015, 22:57:37 via Website

Dann poste doch mal deinen Code + Layout,

denn ohne Code etc. ist es meistens schwer etwas sagen zu können. :)

Antworten
  • Forum-Beiträge: 35

01.10.2015, 15:09:19 via Website

Hallo Frederik

Ich hab das Lyout, die xml dazu und die Fehlermeldung hereinkopiert. Ich habe das Layout noch auf 2 weiteren, fremden Rechnern probiert (gleicher Fehler). Es macht übrigens keinen Unterschied ob ich im ScrollView ein LinearLayout oder ein RelativeLayout verwende. Beim letzten View war immer Schluss. Die Fehlermeldung lautete: "GC overhead limit exceeded". Vlt. kannst Du ja was damit anfangen :)
Gruss Josef

image<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ScrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.viewdemo2.MainActivity" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <Button
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>

</LinearLayout>

Antworten
Gelöschter Account
  • Forum-Beiträge: 438

01.10.2015, 15:16:36 via Website

...und wo ist die Logik?

Den Code der Activity braucht man zum Erkennen von etwaigen Fehlern auch noch.

Aktuelles Entwicklungsprojekt: (thinking) Sudoku Dojo Free (lightbulb)
Ich freue mich über Tester/innen.

Antworten
  • Forum-Beiträge: 1.525

01.10.2015, 15:20:18 via Website

Hallo. Wie es dir nun schon 2x gesagt wurde, ohne Code, nichts los ;)

Dazu als erstes immer Googlen. Das bringt dich schneller weiter, als hier auf eine Antwort zu warten.

Google verrät nämlich viel darüber.

Also Code und Log bitte zeigen. Dann kann dir auch jemand sofort helfen.

Lg

Antworten
  • Forum-Beiträge: 35

05.10.2015, 09:20:48 via Website

Hallo

Außer einer absoluten Standard-Activity (ohne eigenen Code) steht da absolut nix drin (deshalb erschien mir das überflüssig). Das Problem entsteht ja auch zur Entwurfszeit, nicht zur Laufzeit, also beim Erstellen des Layouts. Ich platziere eine View (z.B. einen Button) in das Layout und dann entsteht der Fehler. Leider hat mich Google auch nicht weitergebracht. Dort werden immer nur die dieselben Dinge erklärt (was ist ein CG, wie funktioniert er, warum gibt es ihn?). Ich habe auch keinen Code, der in einer Schleife ständig den Speicher besetzt, keine Rekursion einfach nix davon. Ich platziere einfach nur ein paar Views auf das Layout (siehe Bild oberes Posting) und das war's. Code wird nicht ausgeführt. Es nützt auch nix, ständig zu Speichern, Refresh, Rebuild oder Clean aufzurufen. Aber das Problem scheint nicht weit verbreitet zu sein. Hier also mein Code und noch das Fehlerfenster. Die Sache ist mir ein Rätsel.

Gruss Josef

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}image

— geändert am 05.10.2015, 09:26:10

Antworten
  • Forum-Beiträge: 1.525

05.10.2015, 10:55:22 via Website

Hallo.

Benutzt wohl Eclipse oder?
Schon mal es beim Android Studio versucht?

Versuche es bitte mal da.

Lg

Antworten
Gelöschter Account
  • Forum-Beiträge: 438

05.10.2015, 16:08:50 via Website

Naja, nach eigenen Angaben muss er Eclipse nutzen.

Wie dem auch sei - schonmal versucht, den Speicher für Eclipse einfach raufzusetzen?

Ich gehe mal von einem halbwegs potenten Entwicklungsrechner aus, da kann man in der eclipse.ini die Werte für Xms und Xmx schonmal hochdrehen.
Standardmäßig ist das glaube ich so konfiguriert:
-Xms40m
-Xmx512m

Daraus würde ich z.B. mal
-Xms512m
-Xmx2048m
machen.

Aktuelles Entwicklungsprojekt: (thinking) Sudoku Dojo Free (lightbulb)
Ich freue mich über Tester/innen.

Josef M.

Antworten
  • Forum-Beiträge: 1.525

05.10.2015, 16:39:52 via Website

D. Zielke

Naja, nach eigenen Angaben muss er Eclipse nutzen.

Wie dem auch sei - schonmal versucht, den Speicher für Eclipse einfach raufzusetzen?

Ich gehe mal von einem halbwegs potenten Entwicklungsrechner aus, da kann man in der eclipse.ini die Werte für Xms und Xmx schonmal hochdrehen.
Standardmäßig ist das glaube ich so konfiguriert:
-Xms40m
-Xmx512m

Daraus würde ich z.B. mal
-Xms512m
-Xmx2048m
machen.

Stimmt übersehen :D

Genau das würde ich auch mal versuchen.
Wird oft vorgeschlagen, wenn man es bei Google sucht.

Wenn es dann noch immer nicht klappt, Android Studio testen.

Lg

Josef M.

Antworten
  • Forum-Beiträge: 35

08.10.2015, 09:54:26 via Website

Hallo

Ja, hat funktioniert. Jedenfalls konnte ich jetzt 20 Views platzieren und das reicht vollkommen für eine Demo.
Vielen Dank für den Tipp:) Man lernt immer was dazu.

Gruss
Josef

Antworten