RFR: 8061244 Use of stack-less ClassNotFoundException thrown from (URL)ClassLoader.findClass()
Peter Levart
peter.levart at gmail.com
Fri Oct 24 22:07:01 UTC 2014
On 10/23/2014 12:42 AM, Mandy Chung wrote:
> Talking about exceptions and fillInStackTrace, it's known to be
> significant cost. It'd be interesting to have the VM flag that can
> measure the time it spends in filling in the backtrace of each
> exception type (and perhaps the mean and max stack depth) that will
> give a better idea of the performance distribution. In addition,
> doPrivileged wraps checked exception with PrivilegedActionException
> that essentially has the same stack trace and it doubles the cost even
> in the absence of security manager. I have exchanged some mail with
> the security team to see if this is a low-hanging fruit to improve the
> performance.
>
> Mandy
For such cases, where the purpose is to just change the type of
exception, a Throwable constructor (+ Exception, RuntimeException and
Error constructors chained to it) like the following would be helpful:
protected Throwable(Throwable cause, boolean poseAsCause) {
if (poseAsCause && cause != null) {
backtrace = cause.backtrace;
stackTrace = cause.stackTrace;
suppressedExceptions = cause.suppressedExceptions;
detailMessage = "Posing as: " + cause;
} else {
fillInStackTrace();
detailMessage = (cause==null ? null : cause.toString());
}
this.cause = cause;
}
Such exceptions would inherit the stack-trace from their cause,
eliminating the need to construct their own stack-trace that would be
basically a suffix of the stack-trace of the cause.
Regards, Peter
More information about the core-libs-dev
mailing list