我一直看到有人说异常很慢,但我从来没有看到任何证据.因此,我不会询问它们是否存在,而是会询问异常是如何在场景背后起作用的,因此我可以决定何时使用它们以及它们是否很慢.
据我所知,异常与做一堆返回是一回事,但它也会检查何时需要停止返回.它如何检查何时停止?我正在猜测并说有一个第二个堆栈,其中包含异常类型和堆栈位置然后返回直到它到达那里.我也猜测堆栈触摸的唯一时间是抛出和每次尝试/捕获.使用返回代码实现类似行为的AFAICT将花费相同的时间.但这都是猜测,所以我想知道.
例外如何真正起作用?
在关于Hotspot中的JIT的讲座中,我想尽可能多地给出JIT执行的特定优化的示例.
我只知道"方法内联",但应该有更多.为每个例子投票.
Java是移动设备最重要的语言,因为它允许通过在字节代码和机器之间插入JVM的虚拟层来在每台机器上执行相同的二进制/字节代码.
我们可以构建Java物理机器,它将采用字节代码而不是X86/arm的传统操作码和操作数吗?所以实际操作系统可以使用Java构建,它比在我们当前的操作系统上安装JVM高效/快速
我的猜测是它会限制安装新版本的JVM,但许多移动设备确实支持有限版本的JVM,这可能不是问题吗?
为什么有人没有尝试过对硬件实现相同的概念?
根据我的理解,throw是一个灵长类似的jvm命令.调用它时,JVM"检查当前调用堆栈是否可以捕获它".如果它不能,那么java只是简单地弹出调用栈,就好像调用了一个返回一样.然后jvm"检查当前调用堆栈是否可以捕获它"等等递归.
我的问题:JVM在算法上如何知道调用堆栈中哪些地方可以捕获给定的异常?每个调用堆栈条目中是否存储了元数据,将异常映射到代码块?堆中是否有一个静态数据结构以某种方式跟踪它?因为某处必须有数据跟踪.