Java 如何使用wicket中的zip文件下载来下载更大的文件?

Java 如何使用wicket中的zip文件下载来下载更大的文件?,java,performance,download,wicket,Java,Performance,Download,Wicket,我想加载zip文件,它最大可达50MB。目前,我正在使用以下IModel对象的getObject方法返回zip文件 IModel fileModel = new AbstractReadOnlyModel() { public Object getObject() { ..... ZipOutputStream zip = null; FileOutputStream fileWriter = null; fileWriter = new FileOutputStream

我想加载zip文件,它最大可达50MB。目前,我正在使用以下IModel对象的getObject方法返回zip文件

IModel fileModel = new AbstractReadOnlyModel() {
public Object getObject() {
   .....
   ZipOutputStream zip = null;
   FileOutputStream fileWriter = null;
   fileWriter = new FileOutputStream(destZipFile);
   zip = new ZipOutputStream(fileWriter);

   /*Add the zip file in the folder*/

   return new File(zipFilePath);
}
以下是下载链接

reportLink = new DownloadLink(this.getString("id.reportslink"),
                fileModel) {
            private static final long serialVersionUID = 1L;
}

当前JVM堆大小为1GB,如果有20个用户同时下载文件(假设每个文件50MB),则以上代码将崩溃。任何人都可以提出建议,什么是实现下载文件的最佳方式,这样即使一次最多有100个用户,它也不会崩溃

建议您在发送给定数量的数据后刷新输出流。

建议您在发送给定数量的数据后刷新输出流。

我建议您使用动态资源,而不是简单的下载链接

您可以创建自己的AbstractResource实现,将文件写入OutputStream,然后创建ResourceLink,而不是指向该资源的DownloadLink


查看Wicket免费指南中的第13.6章。

我建议您使用动态资源,而不是简单的下载链接

您可以创建自己的AbstractResource实现,将文件写入OutputStream,然后创建ResourceLink,而不是指向该资源的DownloadLink

请参阅《导叶自由指南》中的第13.6章