gpt4 book ai didi

java - Struts + hibernate : large memory consumption arise during reading big data arrays

转载 作者:行者123 更新时间:2023-11-30 09:18:03 24 4
gpt4 key购买 nike

我为我的网络应用程序使用托管(Struts + hibernate),

托管 java 内存限制:-XX:MaxPermSize=320m。

我的 web 应用程序的每个用户都可以检索(仅从数据库读取,不写入)每个 struts 操作的大量 java bean - 最多 25 MB(number_of_records_in_DB * length_of_record_in_bytes in MySQL)

用户可以同时使用我的网络应用程序(检索数据)

如何优化内存消耗?

我需要使用 Hibernate cashing startegy 吗?

hibernate.cfg.xml :

<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.preferredTestQuery">select 1;</property>

<property name="hibernate.show_sql">true</property>
<property name="hibernate.use_sql_comments">true</property>

<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory </property>
<property name="hibernate.current_session_context_class">thread</property>

Hibernate Dao function :

public List<DataBean> listByPeriod(***) {

****

Session session = HibernateUtil.getSessionFactory().openSession();

session.beginTransaction();

Query query = session.createQuery(hql).setDate(0, date0).setDate(1, date1);

List<DataBean> data = null;

try {
data = (List<DataBean>)query.list();

} catch (HibernateException e) {
e.printStackTrace();
session.getTransaction().rollback();
}

session.getTransaction().commit();
session.close();

return data;
}

struts action + hibernate example :
String execute() {
***
List<Databean> results = DataManager.listByPeriod(***); // size up to 25MB

for (Iterator<Databean> it = results.iterator(); it.hasNext(); ) {
doSomething();
***
}
***
}

最佳答案

如果此数据用于在页面上显示,请考虑使用您真正需要使用的分页和只读列。

更新
您可以尝试使用 hibernate caching正如你所料

关于java - Struts + hibernate : large memory consumption arise during reading big data arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18703664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com