/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
JLabel - ImageIcon -> Stjæler hukommelsen ~
Fra : PMN


Dato : 23-11-00 23:03

Hej NG
Jeg har skrevet et primitivt prg med swing (hvilket jeg ikke har den store
erfaring med). Programmet skal indlæse henvisninger til billedefiler, og
herefter hente dem og vise dem på skærmen, alt dette virker fint. Mit
problem er dog at billederne bliver i hukommelsen, og ikke forsvinder
(Threads).
Jeg har prøvet at kalde System.gc()
- Jeg har vedlagt en stump
(ret rodet - sorry)

Håber nogle kan hjælpe!
På forhånd tak.


ImageUpdate up = new ImageUpdate();
ImageIcon imageIcon;
JScrollPane jScrollPane1 = new JScrollPane();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JButton jButton4 = new JButton();

JPanel jPanel1 = new JPanel(true);
JLabel imageControl1 = new JLabel();

public Frame1()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);

Image icon = createImage(10,10);
icon = getToolkit().getImage("icon.gif");
this.setIconImage(icon);
this.setSize(1024,768);
this.setTitle("image");
this.getContentPane().setLayout(null);
setResizable(false);

jScrollPane1.setBounds(new Rectangle(20, 40, 950, 650));
jScrollPane1.getViewport().add(jPanel1, null);
jButton1.setText("Load new...");
jButton1.setBounds(new Rectangle(399, 10, 100, 27));
jButton1.addActionListener(this);

jButton2.setText("Exit");
jButton2.setBounds(new Rectangle(509, 10, 100, 27));
jButton2.addActionListener(this);

jButton3.setText("About");
jButton3.setBounds(new Rectangle(809, 10, 100, 27));
jButton3.addActionListener(this);

jButton4.setText("Auto");
jButton4.setBounds(new Rectangle(109, 10, 100, 27));
jButton4.addActionListener(this);

jPanel1.add(imageControl1, null);

this.getContentPane().add(jScrollPane1, null);
this.getContentPane().add(jButton1, null);
this.getContentPane().add(jButton2, null);
this.getContentPane().add(jButton3, null);
this.getContentPane().add(jButton4, null);
}

protected void processWindowEvent(WindowEvent e)
{
super.processWindowEvent(e);
if(e.getID() == WindowEvent.WINDOW_CLOSING)
{
System.exit(0);
}
if(e.getID() == WindowEvent.WINDOW_ACTIVATED)
{
this.repaint();
}

}

protected void finalize()
{
try {
super.finalize();
}
catch(Throwable t) {}
}

void jButton1()
{
nytBillede();
}

void jButton2_actionPerformed(ActionEvent e)
{
System.exit(0);
}

void nytBillede()
{
String temp = up.getNext(); //Henter en tilfældig string
imageIcon = new ImageIcon(getToolkit().getImage(temp));

this.setTitle("Image " + temp);

imageControl1.setIcon(imageIcon);
System.gc();
System.out.println("Tråd er " + Thread.activeCount());
}



 
 
N/A (24-11-2000)
Kommentar
Fra : N/A


Dato : 24-11-00 23:22



Ulrik Magnusson (24-11-2000)
Kommentar
Fra : Ulrik Magnusson


Dato : 24-11-00 23:22

> Først skal du sørge for at fjerne alle referencer til dine billeder.
> Derefter køre System.gc(); som kører garbagecollecteren.

Der er ingen garanti for at System.gc() faktisk kører garbage collector'en

Ulrik Magnusson


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste