当前位置:  技术问答>java相关

java 基础:java的速度为什么慢!

    来源: 互联网  发布时间:2015-02-03

    本文导语:  相比较来说,java的速度为什么慢呢?请详细告知。谢谢 | java和VC,VB不同,不是本地代码,java为了实现平台无关性,即java生成的class文件都能在不同的系统中运行,即"一次编码到处使用",是在各个系...

相比较来说,java的速度为什么慢呢?请详细告知。谢谢

|
java和VC,VB不同,不是本地代码,java为了实现平台无关性,即java生成的class文件都能在不同的系统中运行,即"一次编码到处使用",是在各个系统中一边编译一边执行,肯定会慢.
不象vc,vb中已经在本机作出本地代码.即exe,dll文件.但这些文件一旦换一个系统,例如从windows 到UNIX,就根本不能运行.
具体内容可以看一看编译原理,大学的课程.

|
你可以看一下Java虚拟机规范,JVM是一种堆栈机,所有的对象都在堆上分配,所有的局部变量都放在栈上,没有寄存器,所以即使用JIT也很难达到很高的速度。

|
同意struct的意见,JVM就是用软件实现的一个CPU,可以将二者做简单的对比:
1。java程序经过编译后形成的bytecode相当于CPU的汇编指令
2。bytecode的执行是在堆栈中,而CPU指令的执行在寄存器(硬件)中。
举个简单的例子:两个数相加。
java中对应的bytecode为"iadd",CPU指令为"add",iadd的功能是把堆栈(一块内存)顶部的数弹出来并与此时的堆栈顶部相加,源码是
    long temp = popStack();
    *(long*)sp += temp;
也就是说,取操作数、相加、放回结果都是用软件实现的。
而其它未用虚拟机的程序(C)执行时已经是在执行机器代码了,同样一个add,这里是把操作数从内存装入寄存器、然后使用加法器相加,最后放回内存,都是用硬件实现的。
一个用软件执行程序、一个用硬件,也就不难理解为什么java程序会慢了。

    
 
 

您可能感兴趣的文章:

  • 请问Java能干什么,java vm的速度是在是太慢!
  • 请问大侠:都说JSP比ASP执行速度快, 但这和JAVA本身速度慢(靠虚拟机执行)有何关系???
  • 请问大侠:都说JSP比ASP执行速度快, 但这和JAVA本身速度慢(靠虚拟机执行) 有何关系???
  • 请大家来讨论一下JAVA的速度问题
  • 用JAVA编一个程序,测试网络速度~~高手帮忙
  • 我刚看java,知道它的目标代码是解释执行的,目标执行速度快吗?
  • 高分求解:JAVA在WINDOWS,Linux等平台上的运行速度如何?
  • 在眾多的java xml parser中,那種解析器速度最快(xml 文件較大)
  • Java有没有运行速度快的IDE编程环境?
  • 请问java编制的程序主要运行在服务器端还是客户端?听说它的速度比较慢,怎么可以运行在服务器端呢?谢谢!
  • 用java做了个系统,速度可以大大提高。
  • 100分!请大家推荐一个有代码提示,能Debug,速度又快的JAVA编辑器!
  • 怎样提高java server与windows客户端之间数据传输速度?
  • 各位看<think in java>第二版英文版,有什么心得吗?我英文不好,借助金山词霸,看的速度还超慢,好像一共有一千多页,不知道啥时候才能看完
  • 请问大侠学java要有c语言基础吗?
  • 请问,要有哪些java基础才能开始学习EJB???谢谢!!!(急!!!)
  • 假设现在对且仅对java基础比较熟悉(通过scjp),要做一个java proxy的软件,步聚是什么?
  • 请问哪里有 《JAVA核心技术--基础知识》的电子书下载,谢谢!
  • java 基础学者
  • 一道考验基础的JAVA语法题
  • 学JAVA之前要不要先学一些基础的东西?
  • 学习Java的流程是怎样的?我有了java和oop的基础,能否开始学EJB(J2EE)???
  • 请大家谈一下JAVA的学习经验,如何能打下扎实的基础?
  • java 2 基础类,哪里有完整的说明?
  • 有c++基础,学习java需要多长时间?
  • 多帮忙,初学JAVA的人,该用什么书呢?(没有C基础的)
  •  只有一点JAVA语言基础,但是想先看看关于软件工程方面的东西.可能吗?
  • java基础问题,小妹先谢谢了
  • 请推荐一本英文版的JAVA基础教程
  • 有C++基础,要上手JAVA,需要多长时间?
  • 一道基础英语填空题(Java)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • java 2 基础类,哪里有完整的说明? iis7站长之家
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3