
正文
java队列溢出解决代码 java使用队列解决并发问题
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java内存溢出怎么解决?
第一对所有java队列溢出解决代码的代码包括页面中的java代码都进行一遍彻底的回顾检查java队列溢出解决代码,
1.对那些静态(static)的对象要特别留神java队列溢出解决代码,特别是类型为Map,List,Set的,静态的变量会一直驻存在内存中,生命周期比较长,不会被垃圾器回收。
2.对于代码,要审查是否生成了大量的冗余的对象,还有一些逻辑业务处理的类,
算法是否过于复杂,调整算法,对于代码认真审查,再仔细重构一遍代码,能提高代码质量,提高程序运行稳定性。
3.Java中的内存溢出大都是因为栈中的变量太多了。其实内存有的是。建议不用的尽量设成null以便回收,多用局部变量,少用成员变量。
1),变量所包含的对象体积较大,占用内存较多。
2),变量所包含的对象生命周期较长。
3),变量所包含的对象数据稳定。
4),该类的对象实例有对该变量所包含的对象的共享需求。
4.在我的程序中对静态变量的优化后,使程序占用内存量至少提升了5k-10k。所以也不容忽视。
第二还有就是String类相关的东西:
1.字符串累加的时候一定要用StringBuffer的append方法,不要使用+操作符连接两个字符串。差别很大。而且在循环或某些重复执行的动作中不要去创建String对象,因为String对象是要用StringBuffer对象来处理的,一个String对象应该是产生了 3个对象(大概是这样:))。
2.字符串length()方法来取得字符串长度的时候不要把length放到循环中,可以在循环外面对其取值。(包括vector的size方法)。特别是循环次数多的时候,尽量把length放到循环外面。
int size = xmlVector.size();
for (int i = 2; i size; i++) {
。。。
}
3 写代码的时候处理内存溢出
try{
//do sth
....
}catch (outofmemoryerror e){//可以用一个共通函数来执行.
system.out.print (“no memory! ”);
system.gc();
//do sth again
....
} 4.对于频繁申请内存和释放内存的操作,还是自己控制一下比较好,但是System.gc()的方法不一定适用,最好使用finallize强制执行或者写自己的finallize方法。 Java 中并不保证每次调用该方法就一定能够启动垃圾收集,它只不过会向JVM发出这样一个申请,到底是否真正执行垃圾收集,一切都是个未知数。
相关问答
Q1: java堆栈溢出怎么解决
public class Qiqingcai2 {
public static long count= 0;
public static int[] random = new int[7];
public static int[] per = {1,2,3,4,5,6,7};
public static int[] getNext(){
Random random = new Random();
int[] next = new int[7];
for(int i=0;i7;i++){
next[i] = random.nextInt(10);
}
return next;
}
public static void main(String[] args)throws Exception{
System.out.print("上期中奖号码为");
for (int i : per) {
System.out.print(i+" ");
}
System.out.println();
for(int i=0;i1000000000;i++){
count ++;
if(count%10000==0){
System.out.println("程序已经运行了"+count+"次");
}
random = getNext();
if(random[0]==per[0]random[1]==per[1]random[2]==per[2]random[3]==per[3]random[4]==per[4]random[5]==per[5]random[6]==per[6]){
random = getNext();
System.out.print("本期中奖号码为");
Thread.sleep(2000);
for (int j : random) {
System.out.print(j+" ");
Thread.sleep(500);
}
break;
}
}
System.out.println();
System.out.println("程序总共运行了"+count+"次");
}
}
是用循环替代递归 !
Q2: java 算出溢出处理
帅哥。。。
System.out.println("int的最小值="+Integer.MIN_VALUE);
System.out.println("int的最大值="+Integer.MAX_VALUE);
查看下java中int表示的最大值和最小值,我看跟你写的不一样。。。
有不懂的再问,你现在b存的数没有溢出。。。。
Q3: java写一个简单队列,有进队和出队操作,帮我检查一下程序
数据的情况:
[0] [1] [2] [3] [4]
加入一个:
[0] [1] [2] [3] [4] [5]
取出一个后
[0] [1] [2] [3] [4] [5]
可以看出来,每次取出第一个,第一个元素还是没变,一直是0
要让其数据变成 [1] [2] [3] [4] [5] 那么就要自己手动变动数据(就是手动往前移动)
Q4: Java内存溢出,求解决
你想想你的代码List最大长度多少:
for(int i = 0 ; i10000000 ; i++){
list.add(i) ;
if(i==100000){
list.clear();
System.gc() ;
}
你到100000时清空,那List最大长度是10000000 - 100000 = 9900000,如果你的意思是每100000次清空一下,应该写成:
if(i % 100000 == 0)
List中存Integer,一个Integer在Sun的虚拟机上是16字节,9900000就占用约160MB,超过了Sun虚拟机默认堆内存64MB,可以在启动时加参数改成1024MB内存
java -Xmx1024m YourClass
}
Q5: Java程序内存溢出怎么修改?
for循环里面写:{
addBatch (你的insert语句 )
这里可以控制1万条做一次提交
if(i%10000==0) ps.executeBatch();
//清空batch
ps.clearBatch ()
}
这样就不会频繁调用insert操作数据库,100万也就操作100次提交
java队列溢出解决代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java使用队列解决并发问题、java队列溢出解决代码的信息别忘了在本站进行查找喔。





