2010-10-24 23 views
-1
final BufferedImage img = new BufferedImage(3500, 2480, BufferedImage.TYPE_BYTE_INDEXED); 
final Graphics2D g2D = img.createGraphics(); 
g2D.setBackground(Color.white); 
g2D.clearRect(0, 0, width, height); 

(code complet dans la question this).Comment écrire une image sans manquer de mémoire en Java?

Ce code génère une exception Java Heap Space bien que l'attribut jvm ait été défini sur 3 Go. Est-ce que cela pourrait être le problème?

De toute façon n'est-il pas possible de dessiner l'image avec moins de mémoire? Je suis après un BMP de format A4 pour l'impression, seulement avec du texte. La plupart du temps, il est uniquement en noir et blanc, tandis qu'à certains moments, je vais devoir utiliser le bleu, le rose et le gris.

+0

comme la question liée à la vôtre n'est plus disponible (du moins pas pour moi?) Pourriez-vous fournir le code complet ici? –

Répondre

0

Il y a quelque chose de très louche dans les faits énoncés dans votre question. Sauf si je me suis trompé, cela BufferedImage utilise 1 octet par pixel, et donc 3500 x 2480 octets ... environ 10Mbytes. Mais vous prétendez avoir défini la taille du tas à 3Gbytes.

Quelles options JVM avez-vous réellement utilisées?

+0

Env.MAVEN_OPTS = -Xmx1024M (1Go maintenant) – simpatico

+0

C'est le réglage pour la construction maven. Qu'est-ce que vous utilisez lorsque vous exécutez votre application? –

+0

Ce sont les paramètres de: install nbm: run-platform, c'est comme ça que je l'exécute. – simpatico