【问题标题】:JPA persist large blobJPA 坚持大 blob
【发布时间】:2012-11-04 01:55:11
【问题描述】:

我正在尝试使用大型 blob 文件保存实体,但在 JBoss 日志中出现“内存不足”错误。

我测试了几种配置,但总是得到相同的结果。我正在使用 jBoss 6 和 MySQL。

一个例子……实体:

@Entity
@Table(name="ficheros")
public class Fichero implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(unique=true, nullable=false)
    private int idfichero;

    @Lob()
    @Column(nullable=false)
    private Blob fichero;

    public Fichero() {
    }

    public int getIdfichero() {
        return this.idfichero;
    }

    public void setIdfichero(int idfichero) {
        this.idfichero = idfichero;
    }

    public Blob getFichero() {
        return this.fichero;
    }

    public void setFichero(Blob fichero) {
        this.fichero = fichero;
    }   
}

班级:

public Integer insertaFichero(Fichero fich) {
    ficheroDAO.create(fich);

    return fich.getIdfichero();
}

还有其他方法吗?

【问题讨论】:

  • 如果你需要保存很多大文件,你有没有考虑将它们保存在服务器文件系统中而不是使用数据库?

标签: java jpa ejb blob


【解决方案1】:

这个错误的问题是操作系统不能为线程栈分配更多的内存,所以它无法实例化一个新的线程。可能这不是 JBoss 的问题。您必须减少每个线程使用的内存量。 JBoss 线程的合适大小是 128k 或 256k。

您可以从 JBoss 文档中查看这篇文章

https://community.jboss.org/wiki/OutOfMemoryExceptions?_sscc=t.

https://community.jboss.org/wiki/OutOfMemoryExceptionWhenCannotCreateThread.

另请参阅 stackoverflow 问题: Safe thread stack size?

为了减少这个内存量,我在linux中找到了命令:

ulimit -s 256

【讨论】:

    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多