- 主题:Rust可以用来开发安卓自身了
既然都编译成本地代码了,那vm存在的作用是啥?
【 在 xiaoju 的大作中提到: 】
: 现代vm早就是编译成本地代码执行了,喷gc慢都比喷vm慢靠谱
: 不过gc远比rc安全,rc在多线程情况下坑非常多,几乎不可避免会产生泄露,而gc有逻辑上靠得住的stw兜底,只会慢点不会胀死
:
--
FROM 106.3.192.*
意思是完全没有vm这块代码了还是啥的?java岂不是就跟c++一样了?
【 在 xiaoju 的大作中提到: 】
: 逻辑存在而已
: 这年头连vmware都是本地执行,jvm之类怎么可能解释中间码
:
--
FROM 106.3.192.*
我的意思是没有vm这块,逻辑上就跟C++没区别了。那这样java岂不是就是原生语言了,还提vm干嘛呢?
【 在 xiaoju 的大作中提到: 】
: 不一样,java的对象是具有预定义abi的对象,C++的对象可以退化成千奇百怪的形式
:
--
FROM 106.3.192.*
runtime任何语言都有啊,gc不就是个库功能吗?本质跟malloc之类的没啥区别吧
【 在 keygen 的大作中提到: 】
: 现在不叫vm,改叫runtime了
: 提供一些分配内存gc之类的服务
:
--
FROM 106.3.192.*
你没明白我的意思,malloc只是个例子,就是说库怎么都可以,你也可以写个后面带线程的,可以自动回收的malloc
【 在 keygen 的大作中提到: 】
: 有自己的线程在后面待机跑
: 跟malloc还是不太一样的,malloc还得自己free
: 除了这些,跟其他语言的确没有太大区别了。
: ...................
--
FROM 106.3.192.*
没明白,既然有bytecode,那肯定得解释啊,如果解释运行,那肯定就不是原生运行了啊
【 在 xiaoju 的大作中提到: 】
: jvm是个抽象逻辑定义,只要能运行bytecode就叫jvm,与具体实现上用了解释还是编译无关
:
--
FROM 106.3.192.*
那又回到这个话题了,既然这样,vm存在的作用是啥,就是运行第一次编译一下吗?
【 在 xiaoju 的大作中提到: 】
: 可以在第一次加载时编译成native,然后直接运行
:
--
FROM 106.3.192.*
你没回答我的问题,现在的java到底是编译成native直接运行的,还是需要vm解释运行的?如果是前者,vm除了第一次编译,还有别的作用吗?
【 在 xiaoju 的大作中提到: 】
: jvm是个逻辑概念,可以想象成任何能运行bytecode的黑盒
:
--
FROM 106.3.192.*