java语言对比,jvm,垃圾回收
2024-09-07 22:59:57
1.java/c++/ruby/python集中语言的对比
java和c++
1,没有指针
2,没有多继承
3,没有const
4,在实现多态上的区别 tc++里面的虚函数,纯续函数和java里面的多态
5,java以类为基本单位,c++以方法为基本单位
java和ruby
java和python
2,java运行机制与jvm
jvm是实现java跨平台特性的关键。 java既是解释性语言,也是编译型语言。或者说java既不是纯粹的解释性语
言,也不是纯粹的编译型语言。 编译性语言:将语言源代码一次性的编译成特定平台硬件能够执行的机器码。编译生成的可执行程序可以脱离开发环境,在特定的平台执行。
优点:执行效率高
缺点:不能跨平台 解释性语言:对源程序逐行解释成特定平台的机器码并立即执行的语言。
优点:跨平台比较容易,只需要提供特定平台的解释器。
缺点:效率低。 java:经历先编译,后解释这两个步骤。
编译步骤:利用javac编译成与平台无关的字节码文件*.class文件。
解释执行步骤:利用java进行解释执行。
其中,负责解释执行*.class文件的就是java虚拟机,也就是jvm。不同平台的jvm是不同的,是实现跨平台的关键,其向上提供给java*.class字节码的接口完全相同,但向下适应不同平台的接口则互不相同。只要提供特定平台的jvm,编译后的*.class字节码文件就可以在这个平台执行,因此可以视其为一个转换器。
jvm是一个抽象的计算机,包含计算机所有的指令集、寄存器、栈、垃圾回收堆等等。
java虚拟机
3,java的垃圾回收
内存泄漏:
分配出去的内存得不到及时回收。
垃圾回收步骤:
1)发现无用的对象
2)回收被无用对象占用的内存空间。java的垃圾回收只能回收堆内存空间,对物理资源,如I/O,数据库连接无能为力
系统在垃圾回收机制回收任何对象之前,总会调用其finzlize方法
1)注:对象在内存中的状态分为可达状态,可恢复状态,不可达状态。可达状态,是指对象有变量引用;可恢复状态,是指对象有变量引用,但是尚未对其调用finalize方法;不可达状态,是指已经对其调用了finalize方法
2)注:垃圾回收不可预知。强制系统进行垃圾回收可以调用system.gc()或者Runtime.getRuntime().gc(),但依旧不能精确控制垃圾回收机制的进行。
当然,可以采用
StrongReference(强引用):只要被引用,就不可能被回收
SoftReference(软引用):被引用,如果系统内存足够,不会被回收,如果内存空间不足的时候,就会被回收。
WeakReference(弱引用):被引用,不管内存是否足够,都可能被回收
PhantomReference(虚引用):几乎相当于没有引用
最新文章
- AIX 5L 系统管理技术 —— 存储管理——物理卷
- @helper函数使用方法
- Ubuntu下deb包的安装方法 (zz)
- Android 使用 LruCache 缓存图片
- netbeans使用技巧总结+快捷键大全
- git向gitHub上push和pull数据.
- HDU 1422 重温世界杯(DP)
- [Javascript] Using console.count to Count Events
- JavaScript 【跨浏览器XPath,做个兼容】
- 读取sd卡下图片,由图片路径转换为bitmap
- Debian 8 安装BtSync
- jquery 图片转为base64
- 获取linux帮助命令
- JS的MD5加密
- yii2场景的应用(scenarios)
- android-基础编程-ExpandableListview
- Linux中Cache内存占用过高解决办法
- mybatis源码解析5---SqlSession解析
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem C (Codeforces 831C) - 暴力 - 二分法
- Dubbo(6)Dubbo服务集群实现负载均衡
热门文章
- oracle group by rollup实现小计、合计
- [.net core]5.outProcess
- 10.jQuery之停止动画排队stop方法(重点)
- hbase报错org.apache.hadoop.ipc.RemoteException(java.lang.NullPointerException): java.lang.NullPointerException
- 在 sessionStorage存储json对象
- vue报错——Module not found: Error: Can't resolve 'less-loader sass' in ...
- java 约瑟夫问题
- IMAPd - Internet 邮件存取协议服务器
- C++ 临时对象的生存周期
- Java并发编程实战 第4章 对象的组合