Ale*_*ndr 3 java heap garbage-collection
我想减少垃圾收集器.使用此代码更好:
private MyException myException = new MyException();
public void frequentlyUsedMethod(){
try{
...
}catch(Exception e){
throw myException;
}
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
public void frequentlyUsedMethod(){
try{
...
}catch(Exception e){
throw new MyException();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在第一种情况下理解正确,我们只创建一次MyException,但在第二种情况下,我们将阻塞我们的堆并多次诱导垃圾收集器.
没有!使用通常的惯用方法,每次都抛出一个新的异常.您建议的方法存在一些问题:
它抛弃了任何合理的堆栈跟踪,这是异常被抛出程序(或记录)时最重要的事情.堆栈跟踪在Exception创建时填充,而不是在抛出时,因此所有堆栈跟踪都是相同的,没有信息,并且您不知道哪个方法抛出它们:
Exception in thread "main" your.package.MyException
at your.YourClass.<clinit>(YourClass.java:6)
Run Code Online (Sandbox Code Playgroud)由于"性能"原因,代码变得稍微不可读.除非你能证明你的改变能带来显着的改变,否则这总是一种可靠的方法.异常对象很可能不会存在很长时间 - 在这种情况下,为GC清理它是非常便宜的.
顺便说一句,如果你的方法经常抛出一个异常会产生影响,那么无论如何你都会做出非常错误的事情.
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |