gnah
发表于 2013-12-26 17:28
1、Java instanceof 关键字是如何实现的?
官方文档的解释
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.instanceof
其实这说的是设计,具体实现应该是test是否来自同一个类或子类(如果不是primitive的话).
2、如何让JVM快速释放对象的内存?
使用弱引用,允许jvm释放.
显式调用System.gc()通知jvm? 没这么用过.
3、为什么很多语言选择在JVM上实现?JVM在跨平台上有哪些优势?
我认为是看中jvm的生态环境,资源,只要是jvm上的jar,拿来就用多方便.
跨平台的工作交给jvm开发商做,只要jvm支持的架构,动态语言都支持.
hbsycw
发表于 2013-12-27 23:25
回复 17# tempname2
Hi,你的头像是亮点啊!:mrgreen:
zhangxuan3210
发表于 2014-01-02 23:09
一.Java instanceof 关键字是如何实现的?
obj instanceof type
主要判断左边的对象是否是右边的类的实例,然会boolean类型的实例。
在进行判断时,会将obj入栈,然后将其到常量池索引class表进行比较,如果不匹配,则继续和class的父class比较,直到匹配成功,则返回,否则一直比较知道object失败。
二.如何让JVM快速释放对象的内存?
从不同层面进行考虑:
从代码层面:尽量提高代码质量,避免持有对象引用不释放的情形,多使用软引用和弱引用。
从业务层面:如果一直出现频繁fullgc,这种可能需要通过调整jvm的参数来进行,以便让jvm解决。
从调试层面:如果需要具体分析和调优等,需要通过手动gc()来进行解决
三.为什么很多语言选择在JVM上实现?JVM在跨平台上有哪些优势?
1.jvm本身技术比较成熟,支持多种操作系统,形成一个较好的生态圈,可以很方便的使用。
2.jvm有较好的内存管理,开发者不必关注内存的管理和释放,省去了很多内存开发工作。
3.jvm有较好的jit优异性能,并且有大量的lib库,可以很好的实现跨平台。