python垃圾回收与java比较_java语言对比,jvm,垃圾回收

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(虚引用):几乎相当于没有引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值