美文网首页
java的跨平台开发

java的跨平台开发

作者: Chelsea丶 | 来源:发表于2020-03-08 19:24 被阅读0次

想要识别java,就需要安装相应的识别工具,这就是JVM
JVM就相当于一个翻译,使得同一个java程序可以在三个不同的平台上运行。
JVM将.java文件转换成.class文件

垃圾回收机制:GC
用于回收内存,开了一个线程区自动监测那些内存不用了就去回收掉
优点:自动性,而C/C++就需要手动编写
缺点:回收不及时,由于现在电脑内存越来越大,所以java的缺点就不怎么明显

原则

宁可回收慢,不可不回收

GC(Garbage Collection)垃圾回收。

-哪些内存需要回收

程序计数器,虚拟机栈,本地方法栈随着线程一起生灭。
栈帧分配多少内存基本是在类结构确定下来时就已知了。
堆和方法区就不一样,一个接口中的多个实现类需要的内存可能不一样,一个发那个法中多个分支需要的内存也可能不一样。我么你只有在程序运行时才会知道。
这部分内存的分配和回收都是动态的,也是GC关注的

1.引用计数算法:

对象头有一个counter计数器,引用一次+1,引用失效一次-1,到0该对象无效回收
主流jvm没有选用该算法因为他很那解决对象互相循环问题,那么可能导致计数永远不会为0

2.可达性分析算法:

从GC Roots(jvm中引用的对象,本地方法栈引用的对象,方法区产量引用的对象,方法区类静态属性引用的对象)为起点向下搜索,走过的路径为引用链,但一个对象没有任何引用链相连是,他就是无效的。

四种引力:

-强引力(Strong Reference):垃圾收集器不会回收被引用的对象,只有为null时才回收。但是赋给static变量,那么长时间不回收会造成内存泄漏。
-软引力(soft Reference):相较于强引力较弱,只有JVM认为内存不足才会试图回收软引力的对象
-弱引力(Weak Reference):但JVM回收时,无论内存是否充足都会被回收。
-虚引力Phantom Reference):作用只是在回收时能发出通知。

-什么时候回收

1.标记-清除(Mark-Sweep)算法

最简单最基础的算法,简单快速,但是效率 不高,而且会产生大量内存碎片

2.复制(Copying)算法

将可用内存划分长大小相等的两块,每次使用其中一块,当快用完了,就把还存活的对象移到另一块上,清理全部空间。
没有内存碎片,只要一动堆顶指针按顺序分配内存,简单高效缺点是可用内存只有原来一半
现代商业虚拟机不需1:1,只需划分较大一块和较小两块空间,每次使用较大的一块和较小的一块。

3.标记-整理法

基于标记清除法,但是不是直接对可回收对象清理,而是让所有存活对象都想一段移动,直接清理另一端便捷的内存

4.

-如何回收

明天再写
http://baijiahao.baidu.com/s?id=1660813387922539944

相关文章

  • JDK的下载和安装

    跨平台性 所谓跨平台性是指用Java语言开发好的程序可以在多种操作系统上运行,这种跨平台性依赖于Java虚拟机(简...

  • 安卓APP开发技术整理

    原生开发 Java / Kotlin / C++ 混合开发、跨平台开发 自己封装webview + 开源jsBri...

  • JAVA学习笔记1

    1.java的跨平台java能跨平台是因为JVM,java语言可以跨平台,JVM不能跨平台对于不同的系统,有不同的...

  • java的跨平台开发

    想要识别java,就需要安装相应的识别工具,这就是JVM。JVM就相当于一个翻译,使得同一个java程序可以在三个...

  • Java开发环境搭建及第一个小程序

    Java跨平台开发语言: 1.jdk:Java开发套件、开发工具箱 2.jre:Java运行环境,都在jre上跑J...

  • 关于android不如iOS流畅的理解

    Android APP基于java开发,Java是跨平台的语言,需要JVM的支持,中间需要生成不依赖平台的字节码,...

  • Java是如何实现平台无关性(跨平台)的?

    相信对于很多Java开发来说,在刚刚接触Java语言的时候,就听说过Java是一门跨平台的语言,Java是平台无关...

  • Java是如何实现平台无关性(跨平台)的?

    相信对于很多Java开发来说,在刚刚接触Java语言的时候,就听说过Java是一门跨平台的语言,Java是平台无关...

  • Java跨平台的原理

    java virtual machine Java跨平台的原理 Java的跨平台是通过Java虚拟机(JVM)来实...

  • java基础知识

    一张图看懂java的跨平台原理: java开发环境的搭建必备概念 搭建java开发环境先明白两个名词:JRE(Ja...

网友评论

      本文标题:java的跨平台开发

      本文链接:https://www.haomeiwen.com/subject/masjdhtx.html