jjzjj

finalization

全部标签

java - 枚举是否比 public static final 常量更难维护?

我最近与friend讨论枚举与公共(public)静态最终常量。我告诉他publicstaticfinalconstants比枚举更易于维护,有时速度更快(android开发人员文档证实了这一点),也更方便。我还说过,使用枚举也会失去功能:您不能扩展枚举。您不能实例化枚举。然后他说,如果您需要实例化或扩展枚举,则不应使用枚举。然后我回答说,这就是为什么我们应该只使用常量,因为它更易于维护;如果在项目中期我们需要实例化一个枚举或扩展它怎么办?然后我们将不得不改变一切。为了说明我的观点而制作的枚举与常量示例:publicenumWeekDay{/**Wewillstartat1fordem

java - 重写Object类的finalize()方法有什么用?

据我所知,在java中,如果我们想手动调用垃圾收集器,我们可以执行System.gc()。1.我们在覆盖的finalize()方法中执行了哪些操作?2.手动调用JVM垃圾回收器是否需要重写finalize()方法? 最佳答案 Whataretheoperationsthatwedoinsideouroverridenfinalize()method?手动分配的空闲内存(通过一些native调用),即不由GC管理。这是一种非常罕见的情况。有些人也放在那里检查,与对象连接的其他资源已经被释放-但它仅用于调试目的并且它不是很可靠。你必须记

java - 在 finally block 中设置 reference = null?

我的一位同事在finallyblock中设置了对null的引用。我认为这是无稽之谈。publicSomethinggetSomething(){JDBCConnectionjdbc=null;try{jdbc=JDBCManager.getConnection(JDBCTypes.MYSQL);...}finally{JDBCManager.free(jdbc);jdbc=null;//你怎么看? 最佳答案 你是对的,jdbc是一个局部变量,所以当getSomething()方法返回时jdbc将超出范围并符合条件垃圾收集实际上与将其

java - Java 中作为 final 的 main 方法

我在其中一项认证考试中看到了这段代码:publicclassSimpleClass{intnum;finalstaticvoidmain(finalStringargs[]){Strings1="new";Strings2="String";Strings3="Creation";System.out.println(s1+s2+s3);}}我知道final方法是无法覆盖的方法。我还知道,如果更改了main方法的通常签名,JVM会将其视为任何其他普通方法,而不是main()。但是,给我的选项是:1>Codewon'tcompile2>Codewillthrowanexception3>

Java——私有(private)构造函数 vs final 等等

假设有一个类,其所有构造函数都声明为私有(private)的。例如:publicclassThis{privateThis(){}publicsomeMethod(){//somethinghere}//somemore--nootherconstructors}据我所知,将所有构造函数设为私有(private)类似于将“This”类声明为final——这样它就无法扩展。但是,我收到的Eclipse消息给我的印象是这是可能的——可以扩展全构造函数私有(private)类。看看这个:当我尝试用类似的东西扩展这个类时publicclassThatextendsThis{...}Eclips

java - Finalized 拥有大量内存 4 g 中的 2.5 gig

我已经阅读了很多关于终结器如何工作的文章。这是我的理解:如果一个类实现了finalize方法,Jvm将创建一个Finalizer实例作为该对象的看门狗。当GC运行时,它会标记要处理的对象并将它们添加到引用队列中,然后终结器线程将从队列中挑选这些对象并执行它们的终结方法。我的问题是:如何从堆转储中找到因某种原因未完成finalize方法并开始堆积引用队列的对象?引用队列是否按特定顺序排列? 最佳答案 这可能不是您正在寻找的答案,但您是否考虑过使用PhantomReference而不是覆盖finalize()?这是一个article那就

java - 在ArrayBlockingQueue中,为什么将final成员字段复制到本地final变量中?

在ArrayBlockingQueue中,所有需要锁的方法在调用lock()之前将其复制到本地final变量。publicbooleanoffer(Ee){if(e==null)thrownewNullPointerException();finalReentrantLocklock=this.lock;lock.lock();try{if(count==items.length)returnfalse;else{insert(e);returntrue;}}finally{lock.unlock();}}当字段this.lock为finalthis.lock复制到局部变量lock/?

java - 对象未被终结且 Finalizer 线程未执行任何操作

在我们的服务器上,我们开始遇到OutOfMemoryError问题。我们使用EclipseMemoryAnalysis分析了堆转储,发现有许多对象被保留以进行终结(大约占堆的2/3):我们发现,它可能是一些finalize()方法阻塞。我发现了几个关于这个问题的错误报告(here或here),它总是在Finalizer线程堆栈中表现出来,它在某处被阻塞。但在我们的例子中,这个线程正在等待:"Finalizer"daemonprio=10tid=0x43e1e000nid=0x3ffinObject.wait()[0x43dfe000]java.lang.Thread.State:WAI

java - 为什么 javac 不优化空的 try-finally block ?

我写了一个类classtest1{voidfoo(){}}还有一个有很多try和finally语句什么都不做的类:classtest2{voidfoo(){try{}finally{}try{}finally{}try{}finally{}try{}finally{}try{}finally{}}}使用javac(sun-jdk-1.6.0.37,linux-3.8.13-amd64)编译它们并与od比较文件。test1.class000000006614307154102016306256407216302006100517307301200000200645570201440675

java - 匿名内部类和 Final 修饰符

这个问题在这里已经有了答案:Anonymous-Innerclassesshowingincorrectmodifier(4个答案)关闭3年前。据我正确理解匿名类总是final:这在JLS15.9.5中有专门提到但是,当我运行以下代码来检查它是否显示Inner类不是final时。publicclassTest{staticclassA{}publicstaticvoidmain(Stringarg[]){Aobj=newA(){};if((obj.getClass().getModifiers()&Modifier.FINAL)!=0){System.out.println("Itis