Bonjour,

Je travaille actuellement sur le site d'une association qui souhaites pouvoir uploader facilement des vidéos pour qu'elles soient ajoutées automatiquement sur le site.
c'est la partie upload qui me pose problème.

Les vidéos peuvent peser jusqu' à 500mo chaque et je dois en uploder deux à chaque fois.
Je tombe donc sur l'erreur en titre du sujet: java.lang.OutOfMemoryError: Java heap space.
J' ai lu sur differents forums que d'aouter -Xmx1024m dans les arguments de la VM pouvait regler le problème mai pas che moi. Je mettrai bien 2048 mais je développe sous un vielle acer 32bits et 2048mo de RAM c'est tout ce dont je dispose, ce qui est déjà bien vu la machine.

Je me demandais s'il n'y avait pas moyen de forcer l'ecriture en swap de ces fichiers?

Voici le code de l'application, il vous sera peut-être familier, j'en ai trouvé une bone partie sur des forums.
Le formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
<div id="formAction5">
				<fieldset>
				<legend><b>Entrez les informations de la vidéo</b></legend>
					<form action="AjouterVideo" method="post" enctype="multipart/form-data">
						<table>
							<tr>
								<td>Date : </td><td> <input id="date5" type="text" name="date5"> </td>
								<script>$('#date5').datepicker({ dateFormat: "yy-mm-dd", firstDay: 1 });</script>
							</tr>
							<tr>
								<td>Titre : </td><td> <input type="text" name="titre5"> </td>
							</tr>
							<tr>
								<td>Desctrption : </td><td> <textarea name="description5" rows="10" cols="35"></textarea> </td>
							</tr>
							<tr>
								<td>Auteur : </td><td> <input type="text" name="auteur5"> </td>
							</tr>
							<tr>
								<td>Fichier ogg : </td><td> <input type="file" name="urlOgg5"> </td>
							</tr>
							<tr>
								<td>Fichier mp4 : </td><td> <input type="file" name="urlMp45"> </td>
							</tr>
							<tr>
								<td><input type="submit" name="submit5" value="OK"></td>
							</tr>
						</table>
					</form>
				</fieldset>
			</div>
La servlet:
L'exception apparait ici à la ligne 88.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
 
package fr.jerrycan.action;
 
import java.io.File;
 
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.sql.Date;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
 
import fr.jerrycan.dao.VideoDao;
import fr.jerrycan.metier.Admin;
import fr.jerrycan.metier.ConvertionDeString;
import fr.jerrycan.metier.Video;
 
/**
 * Servlet implementation class AjouterVideo
 */
public class AjouterVideo extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final String UPLOAD_DIRECTORY = "/home/jerrycan/data/videos";
	private static final int THRESHOLD_SIZE = 1024 * 1024 * 50; // 50MB
	private static final int MAX_FILE_SIZE = 1024 * 1024 * 500; // 500MB
	private static final int REQUEST_SIZE = 1024 * 1024 * 1500; // 1,5GB
 
 
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjouterVideo() {
        super();
        // TODO Auto-generated constructor stub
    }
 
	/**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
 
	/**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Admin admin = (Admin) request.getSession().getAttribute("admin");
		if(admin == null){
			request.getRequestDispatcher("/admin/index.jsp").forward(request, response);
		}else{
			HashMap<String, String> lesChamps = new HashMap<>();
			// v�rifie si la requete contient un fichier
			if (!ServletFileUpload.isMultipartContent(request)) {
 
			}else{
 
				// configuration de certains parametres
				DiskFileItemFactory factory = new DiskFileItemFactory();
				factory.setSizeThreshold(THRESHOLD_SIZE);
				factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
 
				ServletFileUpload upload = new ServletFileUpload(factory);
				upload.setFileSizeMax(MAX_FILE_SIZE);
				upload.setSizeMax(REQUEST_SIZE);
 
				// construit le chemin du dossier pour stocker la fichier re�u
				String uploadPath = UPLOAD_DIRECTORY;
				// creer le r�pertoire si celui-ci n'existe pas
				File uploadDir = new File(uploadPath);
				if (!uploadDir.exists()) {
					uploadDir.mkdirs();
				}
				String mime = "";
				System.out.println("ok");
				try {
					System.out.println("ok 1");
					// parse la demande pour stocker les donnees
					List<FileItem> formItems = upload.parseRequest(request);
					System.out.println("ok2");
					// iterates over form's fields
					for (FileItem item : formItems) {
 
						// processes only fields that are not form fields
						if (!item.isFormField()) {
							String fileName = item.getName();
							String filePath = uploadPath + File.separator + fileName;
							File storeFile = new File(filePath);
							lesChamps.put(item.getFieldName(), item.getName());
							mime = fileName.substring(fileName.lastIndexOf("."));
							System.out.println(mime);
							if(mime.compareTo(".ogg") == 0 || mime.compareTo(".mp4") == 0){
								System.out.println("ok3");
								// sauve le fichier sur le disque
								item.write(storeFile);
							}else{
								request.setAttribute("message", ConvertionDeString.convertToIso("Seul les extentions de fichier ogg et mp4 sont acceptées"));
								request.getRequestDispatcher("admin/message.jsp").forward(request, response);
 
							}
						}else{
							System.out.println(item.getFieldName());
							System.out.println(item.getString());
							lesChamps.put(item.getFieldName(), item.getString());
						}
					}
				} catch (Exception ex) {
					request.setAttribute("message", "Erreur: " + ex.getMessage());
					request.getRequestDispatcher("admin/message.jsp").forward(request, response);
 
				}
				String date = lesChamps.get("date5");
				int year = Integer.parseInt(date.substring(0, 4));
				int month = Integer.parseInt(date.substring(5, 7));
				int day = Integer.parseInt(date.substring(8));
				@SuppressWarnings("deprecation")
				Date dateSql = new Date(year - 1900, month -1, day);
 
				String sujet = lesChamps.get("titre5");
				String description = lesChamps.get("description5");
				String auteur = lesChamps.get("auteur5");
				String urlOgg = lesChamps.get("urlOgg5");
				String urlMp4 = lesChamps.get("urlMp45");
				String submit = lesChamps.get("submit5");
 
 
				//Sauvegarde de la nouvele video
				if(sujet != null && sujet != ""
						&& description != null && description != ""
						&& auteur != null && auteur != ""
						&& description != null && description != ""
						&& urlMp4 != null && urlMp4 != ""
						&& urlOgg != null && urlOgg != ""
						&& date != null && date != ""
						&& submit != null && submit != ""
						){
					VideoDao dao = new VideoDao();
					Video uneVideo = new Video(0, urlMp4, urlOgg, auteur, dateSql, sujet, admin, description);
					try {
						dao.save(uneVideo);
						request.setAttribute("message", ConvertionDeString.convertToIso("Vidéo sauvegardée"));
						request.getRequestDispatcher("admin/message.jsp").forward(request, response);
					} catch (NoSuchAlgorithmException | SQLException e) {
						request.setAttribute("message", ConvertionDeString.convertToIso("Erreur : " + e));
						e.printStackTrace();
					}
				}else{
					request.setAttribute("message", ConvertionDeString.convertToIso("Tous les champs sont requis"));
					request.getRequestDispatcher("admin/message.jsp").forward(request, response);
				}
			}
		}
	}
 
}
Quel qu'un autait-il une idée pour résoudre mon problème. Merci.