jjzjj

java - 将新数组分配给现有数组到 'clear' Java 中的数组是不好的做法吗?

所以我目前正在开发一个程序,该程序需要能够处理存储在数组中的大量数据,并且需要一种方法来清除数组中的所有内容。对于下面的示例,明智地做内存是不是一件坏事?我知道垃圾收集器最终会为您清理它,但有没有其他方法(例如for循环并将每个值设置为null)可能比这更好的原因?Object[]objArray=newObject[n];/*DosomestuffwithobjArray*/objArray=newObject[n]否则,这样做将允许此操作在O(1)时间内运行,而for循环则需要O(n)。 最佳答案 这是不好的做法。首先,为变量分

Java: get+clear atomic for map

我想实现以下逻辑:-将使用以下结构//Mapkeepingthependingupdates//groupedbytheidoftheupdatedobjectfinalMap>updatesPerId=newConcurrentHashMap();-n个生产者会向updatesPerIdmap添加更新(对于同一个id,可以同时添加2个更新)-oneTimerThread会时不时地运行,并且必须处理接收到的更新。像这样的东西:finalMap>toBeProcessed=newHashMap(updatesPerId);updatesPerId.clear();//iterateove

Java vector : clear vs removeAllElements method

我是Java新手。对于Vectors,哪个更有效——clear()或removeAllElements()。我猜removeAllElements因为它保持容量不变(不释放内存)而clear()释放内存。根据应用的不同,两者都可能是理想的。我会很感激一些意见。谢谢。 最佳答案 根据JavaDoc关于.removeAllElements()方法。"Thismethodisidenticalinfunctionalitytotheclearmethod(whichispartoftheListinterface)."

java - 设计 : When the line between domain objects and service objects isn't clear

这个问题的核心是设计问题。我将使用Java/JavaEE示例来说明这个问题。考虑一个Web邮件应用程序,该应用程序使用JPA构建持久性,使用EJB构建服务层。假设我们的EJB中有这样一个服务方法:publicvoidincomingMail(Stringdestination,Messagemessage){Mailboxmb=findMailBox(destination);//whocareshowthisworksmb.addMessage(message);}这似乎是一种合理的商业方法。据推测,Mailbox对象仍将被附加,并且它将无缝地将更改保存回数据库。毕竟,这是透明持久性

java - 为什么 java.util.Arraylist#clear 是按照它在 OpenJDK 中的方式实现的?

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#473publicvoidclear(){modCount++;//Letgcdoitsworkfor(inti=0;i我的问题是,为什么他们必须通过支持数组{O(n)}进行循环以使每个元素符合垃圾回收条件,而他们本可以重新初始化支持数组,丢弃对整个数组的引用整个{O(1)}并使其符合垃圾收集条件?clear()的O(n)性能对我来说似乎不太好,还是我遗漏了什么?

java - ArrayList.clear() 是否将数组的大小调整为尽可能小的大小?

如果我理解ArrayLists,它们由一个数组支持,该数组在其满时自动调整大小。在调用clear()时,ArrayList是否已调整为尽可能小的数组大小? 最佳答案 不,不是,这是一个需要牢记的问题。假设ArrayList的内部Object[]增长到1000000个元素。现在调用ArrayList.clear()。这会将所有1000000个元素设置为null,并将内部大小设置为0。将1000000置为空是一项耗时的操作,ArrayList仍将占用堆上的1000000x4字节Object[]。您可以在clear()之后调用ArrayL

java - 我是否应该经常调用 EntityManager.clear() 以避免内存泄漏?

我是JPA/OpenJPA的新手,我注意到如果我在持久化实体后不调用EntityManager.clear(),我会得到一个OutOfMemoryError(我不断在循环中添加新实体)。我不确定这是预期的行为还是只是OpenJPA1.2.1故障。那么,我是否需要自己明确分离实体?如果我不是,这仍然是一个好习惯吗? 最佳答案 我对JPA没有太多经验。不过这很有用-在JPA中,您必须:-为每个事务创建一个新的EntityManager。-在每个事务后调用clear()以清除持久性上下文。 关

Java日历问题: why are these two Dates not equal?

importjava.io.*;publicclasstesting{publicstaticvoidmain(Stringa[])throwsException{Dated1=newDate();Thread.sleep(2000);Dated2=newDate();if(d1.equals(d2)){System.out.println("Bothequal");}else{System.out.println("Bothnotequal");}Calendarc1=Calendar.getInstance();Calendarc2=Calendar.getInstance();c

workbook.worksheets.clear();破坏Excel中的单元大小

i=(i+1)%100;{worksheet.Cells.ColumnWidth[0,1]=10000;workbook.Worksheets.Add(worksheet);stringmyFileName=String.Format("{0}__{1}",DateTime.Now.ToString("yyyyMMdd"),".csv");stringmyFullPath=Path.Combine("C:\\",myFileName);workbook.Save(myFileName);worksheet.Cells[i,0]=newCell(DateTime.Now,@"yyyy-MM-dd

c++ - 我的应用程序中的内存增加

我正在学习C++,我需要一些关于如何在不使用指针时清理内存的建议。我有一个后台Blackberry10应用程序,它在停止前的内存限制为3MB,我的应用程序由于达到此限制而被停止,我无法找出原因。我已经将增加内存的范围缩小到一个函数——如果我不调用这个函数,内存就不会增加。该函数使用QVariant、QVariantList、QVariantMap、QString,它们是在创建类时在函数外部声明的(即QVariantMap映射),在我访问函数中的这些对象之前,我在每个对象上调用.clear()我的理解是应该清理所持有的内存,我也在函数中使用int,它也在它之外声明。该函数非常大并且正在调