淘客熙熙

主题:【求助】:请教信息技术方面的大牛有关多线程的问题 -- newtime

共:💬51 🌺45 新:
全看分页树展 · 主题 跟帖
家园 我还遇到过jvm把内存吃光的事情

给了-X都不行,当时是要验证自己写的算法的有效性。后来的解决办法是:不用jvm提供的基本对象,因为java.lang.Object在一般的实现里面,每个对象有8个byte的overhead,只能自己用大数组去存每个实例的一个属性,这样每个数组有这个overhead,而不是每个对象都浪费 8 bytes。

除了autoeagle的建议以外,我建议你去看看你的程序是否有某种访存模式。我隐约记得解方程组的时候,访存通常是逐行/逐列,最多是按对角线来。这样的话,你可以安排数据在内存里面的排列顺序,CPU会按cache line来读取数据,如果你的数据安排合适,每个cache line的第一个数据读过以后,后面的数据也在cache里面了。

或者你自己去添一两句汇编,prefetch一下后面一个循环要用的数据。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河