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

java语言对比,jvm,垃圾回收的更多相关文章

  1. Java内存管理 -JVM 垃圾回收

    版权声明:本文为博主原创文章,未经博主允许不得转载 一.概述 相比起C和C++的自己回收内存,JAVA要方便得多,因为JVM会为我们自动分配内存以及回收内存. 在之前的JVM 之内存管理 中,我们介绍 ...

  2. Java基础:JVM垃圾回收算法

    众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成.本文介绍JVM进行垃圾回收的各种算法. 1. 如何确定某个对象是垃圾 1.1. 引用计数法 1.2. 可达性分析 2. 典型 ...

  3. 深入理解Java虚拟机之JVM垃圾回收随笔

    1.对象已经死亡? 1.1引用计数法:给对象中添加一个引用计数器,每当有一个地方引用他时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器都为0的对象就是不可能再被使用 的.但是它很难解决 ...

  4. 深入理解java虚拟机之——JVM垃圾回收策略总结

    如何判断一个对象是否存活 引用计数算法:给对象中添加一个引用计数器,每当有引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就是不可能再被使用.  Java虚拟机里面没有 ...

  5. 【转】Java虚拟机的JVM垃圾回收机制

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp43       1.JVM内存空间     JVM堆(Heap)= 新生代 ...

  6. Java虚拟机学习笔记——JVM垃圾回收机制

    Java虚拟机学习笔记——JVM垃圾回收机制 Java垃圾回收基于虚拟机的自动内存管理机制,我们不需要为每一个对象进行释放内存,不容易发生内存泄漏和内存溢出问题. 但是自动内存管理机制不是万能药,我们 ...

  7. 老李分享:jvm垃圾回收

    老李分享:jvm垃圾回收   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478 ...

  8. Java虚拟机垃圾回收:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法

    在<Java对象在Java虚拟机中的创建过程>了解到对象创建的内存分配,在<Java内存区域 JVM运行时数据区>中了解到各数据区有些什么特点.以及相关参数的调整,在<J ...

  9. Java:JVM垃圾回收(GC)机制

    JVM垃圾回收算法 1.标记清除(Mark-Sweep) 原理: 从根集合节点进行扫描,标记出所有的存活对象,最后扫描整个内存空间并清除没有标记的对象(即死亡对象)适用场合: 存活对象较多的情况下比较 ...

  10. JVM基础系列第8讲:JVM 垃圾回收机制

    在第 6 讲中我们说到 Java 虚拟机的内存结构,提到了这部分的规范其实是由<Java 虚拟机规范>指定的,每个 Java 虚拟机可能都有不同的实现.其实涉及到 Java 虚拟机的内存, ...

随机推荐

  1. 如何快速的查找服务所在的进程id?

    执行 pgrep -l 服务名称 这里以查找redis所在的进程id为例 执行 pgrep -l redis 从图中可知进程id 为30058

  2. PostgreSQL-UNION与Order by 冲突

    问题描述 union 连接的两个sql 都包含 order SELECT <property1>, <property2> FROM <table1> ORDER ...

  3. 服务安全之:JWT

       JWT是JSON Web Tokens的缩写.既然叫JSON Web Tokens,所以JWT Tokens中真正包含的是多个JSON对象.为什么是多个JSON对象呢?因为SWT Token实际 ...

  4. 解决Response.AddHeader中文乱码问题

    string filename = HttpUtility.UrlEncode(Encoding.UTF8.GetBytes("培训班自然情况表")); Response.AddH ...

  5. echats 油表盘 鼠标拖动指针改变数值

    近期需要做一个鼠标拖动完成油表盘数值改变的功能,使用canvas感觉太麻烦,而且指针不太好监听和拖动,只能另谋出路,在网上参考了某位大神的操作,最终选择了echats来解决这个问题.废话不多说,直接上 ...

  6. IntelliJ IDEA 远程调试 Tomcat 的方法

    在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法.在本文中,就让我们一起来看看,如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试. 首先,配置remo ...

  7. vue.js(5)--事件修饰符

    vue中的事件修饰符(.stop..prevent..self..capture..once) (1)实例代码 <!DOCTYPE html> <html lang="en ...

  8. ABAP中TAB分隔符的使用

    在ABAP开发中,存在很多特殊字符,使用情况也不同,下面及时SAP中的TAB分隔符的使用案例: 46C以下的版本: DATA: gc_result(50) type c. constants: con ...

  9. 关于ARM PC值

    PC值(Program Counter). ARM采用流水线来提高CPU的利用效率, 对于三级流水线, 一条汇编指令的执行包括 取值,  译码, 执行三个阶段. 当MOV指令的取指动作完毕后, 进入M ...

  10. Linux--磁盘管理--04

    1.磁盘的工作原理: 磁道.磁头.扇区.柱面 2.磁盘分类: 机械盘: 串行:SCSI.iSCSI.SATA 并行:ATA 固态盘:HDD 3.文件系统: Windows :fat32  ntfs  ...