[求助]简单的两个问题, 哈哈,新手,不懂,只能帮你顶拉!UPUPUPUPUPUPUP! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对于你的问题一,我在这里生成了200000个对象没有问题,我想你的问题在于TestObj这个对象占用的内存空间到底是多大,要不你把这个对象的代码也贴上,大家来帮你测试一下。 iceandfire(【OPENSOURCE】) :--------------我的 TestObject 现在里面就有一个String的成员,然后是简单的get,set,本来还含有一个java.util.Date的,后来出了问题以后我就把那个java.util.Date的成员注释掉了。onefox(一品狐)--------------------效率的差距太过于明显,即使是现在我的内存不溢出,但是我20,000的时候报错用了半个小时!!!!楼下的各位:-----------------大家给出出主意呀,感激不尽。 没有试过,不过你的处理是否得当只得一问?java和c++本身就是有一定差别的,你本能把在c++上用的那一套完全的搬到java中你必须先搞清除,在java中的你的应用处理,才能实现你的c++下的算法! 回复人: Arias(道) ( ) 信誉:100 2004-04-27 20:15:00 得分:0 没有试过,不过你的处理是否得当只得一问?java和c++本身就是有一定差别的,你本能把在c++上用的那一套完全的搬到java中你必须先搞清除,在java中的你的应用处理,才能实现你的c++下的算法! --------------------------------------------------------------------------我知道很多人会说我的把100,000,000 个对象放入内存的方法,这是没有办法的办法,实际情况是需要监控100,000,000个对象,而且需要是实时或者近似实时,而且要求跨平台。在实际应用中,实际的对象肯定要比TestObj更大...... 试过同样的数据量,是不会有问题的:~)仅就你这段代码而言,有一点值得商量:...for( int i = 0;i<100000;i++){ TestObj obj = new TestObj(); java.util.Date date =new Date( random.nextLong()); obj.setDate( date); System.out.println(i); set.add( obj);}...这个循环中,相当于你创建了100000个新的TestObj的对象和100000个Date对象。对JAVA来说,创建新对象还是要付出一定代价的。包括分配数据空间和内存空间。而你这些对象其实没有必要使用新的:~)可以改成下面的代码,重复使用同一个对象,这样就会使程序的开销减少很多:...TestObj obj;java.util.Date date;for( int i = 0;i<100000;i++){ obj = new TestObj(); date =new Date( random.nextLong()); obj.setDate( date); System.out.println(i); set.add( obj);}... 对于你的第2个问题,我用过了java的免费ftp的api了,写得非常好,但现在我不在我的住处,等后天我回去了给你发过去,我留一个我的e_mail:[email protected],你给我封信(地址),我后天好发。 楼上的:~)一并发个来吧!一起学习。谢谢!E-Mail:[email protected] marvy(marvy) :------------------你说的那个内存消耗的问题,是我估计留下的,因为实际的对象不是TestObj,而是一个很大的东西。后来我又做了测试,当 set = new HashSet( 10,000,000);的时候,已经报了内存溢出错误(还没有往里面添加数据呀), 我的意见是,你的对象在c++当中保存在栈当中,应该能使用虚拟内存并且地址可以使扩充的。在Java当中使用的都是堆,这是造成溢出的原因,并没有及时垃圾回收。我的建议是,你构造数据类型,就是set的类,然后一次性构造数组。这比你每一次调用构造函数要节省栈空间,并且直接形成堆,并能够及时地垃圾回收,具体的垃圾回收机制在程序员上面有,你可以自己看一下,jvm在运行的时候机制,也是很重要的。至于你的512内存,我很羡慕,但是要知道os显示的内存并不是真实的物理内存的使用值,你的其他应用程序也是要付出内存代价的,可能有一部分硬盘在忙活了,嘎嘎! 继承protected函数如何调用 用java 编写程序求最大连续递增的有序子串(求解) 求助:有Java技术方面的职称是高级工程师的吗? 谁有java英文版api给我发个下载地址,我找不到谢谢 问一个java内存方面的问题 JXTA 怎样跟当前日期得到上月的月末日期??? 一个有关布局的很奇怪的问题 怪怪怪!郁闷了五天了,无解!急,高手帮忙!我快气晕了! 紧急求救!! CVS如何做到同时只能有一个人改同一个文件? 请教大家一个挠头的问题,有兴趣的进来瞧瞧吧!!人多了散分啦!!!
--------------
我的 TestObject 现在里面就有一个String的成员,然后是简单的get,set,本来还含有一个java.util.Date的,后来出了问题以后我就把那个java.util.Date的成员注释掉了。onefox(一品狐)
--------------------
效率的差距太过于明显,即使是现在我的内存不溢出,但是我20,000的时候报错用了半个小时!!!!
楼下的各位:
-----------------
大家给出出主意呀,感激不尽。
java和c++本身就是有一定差别的,你本能把在c++上用的那一套完全的搬到java中你必须先搞清除,在java中的你的应用处理,才能实现你的c++下的算法!
没有试过,不过你的处理是否得当只得一问?
java和c++本身就是有一定差别的,你本能把在c++上用的那一套完全的搬到java中你必须先搞清除,在java中的你的应用处理,才能实现你的c++下的算法!
--------------------------------------------------------------------------
我知道很多人会说我的把100,000,000 个对象放入内存的方法,这是没有办法的办法,
实际情况是需要监控100,000,000个对象,而且需要是实时或者近似实时,而且要求跨平台。
在实际应用中,实际的对象肯定要比TestObj更大......
...
for( int i = 0;i<100000;i++){
TestObj obj = new TestObj();
java.util.Date date =new Date( random.nextLong());
obj.setDate( date);
System.out.println(i);
set.add( obj);
}
...
这个循环中,相当于你创建了100000个新的TestObj的对象和100000个Date对象。对JAVA来说,创建新对象还是要付出一定代价的。包括分配数据空间和内存空间。而你这些对象其实没有必要使用新的:~)可以改成下面的代码,重复使用同一个对象,这样就会使程序的开销减少很多:
...
TestObj obj;
java.util.Date date;
for( int i = 0;i<100000;i++){
obj = new TestObj();
date =new Date( random.nextLong());
obj.setDate( date);
System.out.println(i);
set.add( obj);
}
...
一并发个来吧!
一起学习。谢谢!
E-Mail:[email protected]
你说的那个内存消耗的问题,是我估计留下的,因为实际的对象不是TestObj,而是一个很大的东西。
后来我又做了测试,当 set = new HashSet( 10,000,000);的时候,已经报了内存溢出错误(还没有往里面添加数据呀),