Java运行机制 高级语言的运行机制 我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。 翻译,其实翻译的方式有两种,一个是编译,一个是解释。两种方式
当JVM内存严重不足时,就会抛出java.lang.OutOfMemoryError错误。本文总结了常见的OOM原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正。 一、Java heap space Java heap space(堆内存溢出),当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出java.lang.OutOfMemoryE
JVM对象创建过程 类加载检查 虚拟机遇到一条new指令时,首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过,如果没有,就必须先执行对应的类加载过程; new指令对应到语言层面就是new关键词、对象克隆
Java的三大版本以及JDK、JRE、JVM Java的三大版本 JavaSE:标准版(桌面程序、控制台开发...) JavaME:嵌入式开发(手机、小家电) JavaEE:企业级开发(web端、企业级开发) JDK、JRE、JVM JDK:Java的开发环境(JDK包含JRE) JRE:Java的运行环境 JVM:Java的虚拟机
1、垃圾回收(GC) GC(Garbage Collection,即垃圾回收)的基本原理:将内存中不再被使用的对象进行回收。垃圾回收主要是发生在堆内存里面,在1.8以后FULLGC也会发生在meta space中。 对新生代的对象的收集称为minor GC。Minor GC指新生代GC,即发生在新生代(包括Eden区和Survivor区)的垃圾回收操
1 线程的意义 操作系统支持多个应用程序同时执行,每个应用至少对应一个进程,彼此之间的操作和数据不受干扰。当一个进程需要磁盘IO的时候,CPU就切换到另外的进程,提高了CPU利用率。 有了进程,为什么还要线程?因为进程的成本太高了。 启动新的进程必须分配独立的内存空间,建立数据表维护它
java简介 1 特点 1.1 俩个基本概念 类 对象 1.2 三大特性 封装 继承 多态 2 java开发工具 2.1 JDK JRE JVM JDK:Java开发工具包 JRE:Java运行环境 JVM:Java虚拟机 使用JDK开发java程序,交给JRE去运行。 JDK = JRE + 开发工具集(例如javac编译工具) JRE = JVM + Java SE标
1.ArrayList 和 LinkList 字面上来看,两个都实现了List接口。 ArraryList是基于索引的数据接口,底层是数组,以O(1)时间复杂度对元素进行随机访问。LinkList以元素列表的形式存储数据,还会存储指向下一个节点的指针,本质是双向链表,有头尾节点,首尾指针,以O(n)时间复杂度对进行查找元素。
JVM垃圾回收算法 标记:找到不能被作为垃圾回收的对象并标记。标记的对象保留,未被标记的对象作为垃圾释放。 标记清除法 标记:将一定不能被回收的根对象作为GC Root对象,从根对象出发,沿着它的引用链找当前对象有没有被根对象引用到。若是则不能被回收,加标记。若否,则不加标记,GC时释放掉
JVM堆内存参数: 对于JVM内存配置参数:-Xmx10240m -Xms10240m -Xmn5120m -XX:SurvivorRatio=3 其最小内存值和Survivor区总大小分别是? -Xmx10240m Xmx:Java虚拟机最大内存10G m:单位,兆字节 -Xms10240m Xms:Java虚拟机的最小内存数10G m:单位,兆字节 -Xmn5120m:5G Xmn:虚拟机中新生代的
wget -c https://dist.neo4j.org/neo4j-community-4.4.10-unix.tar.gz mkdir -p /data/neo4j tar -xf jdk-11.0.16.1_linux-x64_bin.tar.gz -C /usr/local/ tar -xf neo4j-community-4.4.10-unix.tar.gz -C /data/neo4j/ cd /data/neo4j/neo4j-community-4.4.10/ vim /etc
JDK、JRE、JVM的区别与联系 注:B站狂神说Java教程学习笔记 JDK:Java Development Kit JAVA 开发者工具 范围最大,包含JRE和JVM,含有开发者工具,可以进行Java编程、打包、编译等 JRE:Java Runtime Environment Java运行时环境 包含JVM,安装JRE可以进行Java程序的运行 JVM:Java Vertual Mach
自从 Oracle 收购 Sun 以后,Java 世界也变了不少。 好在 Oracle 还开源了个 OpenJDK,并且很多东西都变了。 OpenJDK 就是一个桶,什么都可以往里面装,各大公司又纷纷推出自己的 JDK,简直可以直呼看不懂。 OpenJDK 在 Windows 环境下的诟病就是不好装,不知道怎么装。 救民水火的 RedHat Re
在有C/C++基础的前提下,进行Java学习。 参考教程: https://www.bilibili.com/video/BV18V411W7oc?p=9&share_source=copy_web 垃圾收集Garbage Collection :Java有自动回收无用内存空间的机制,非实时、程序员不可见不可控。 后续问题待解决: Java跨平台/可移植性原理 :Writ
1 概述 2 JVM与Java体系与结构 2.1 字节码 我们平时说的java字节码,指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为:jvm字节码。 不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行。 Java虚拟
从项目到代码 找工作前的整个学习体系(学会这些东西去解决问题,不单单去学这些东西) JavaSE知识图 Java语言跨平台原理 Java语言特点 完全面向对象:Java支持封装,继承,多态,面向对象编程,让程序更好的达到高内聚,低耦合的标准。 支持分布式: 健壮型:Java强类型机制,异常处理,垃圾的自动收集
〇、概述 1、资料 2、内容概括 一、概念 (一)JVM (二)JUC (三)GC 二、命令 (一)JVM优化命令 (二)JUC命令 三、工具 (一)jdk工具
1.jvm的简单抽象模型: 2.类加载机制 双亲委派模型是为了防止jdk核心类库被篡改,如果需要打破可以重写Classloader.loadClass方法。r 双亲委派模型: 一个类加载器收到一个类的加载请求,他会先判断自身是否已存在该类,如果不存在上抛给上一级类加载器ClassLoad
JVM 主要由类加载器、运行时数据区、执行引擎三个部分组成。(➕类加☁运数
堆外内存 JVM启动时分配的内存,称为堆内存,与之相对的,在代码中还可以使用堆外内存,比如Netty,广泛使用了堆外内存,但是这部分的内存并不归JVM管理,GC算法并不会对它们进行回收,所以在使用堆外内存时,要格外小心,防止内存一直得不到释放,造成线上故障。 堆外内存的申请和释放 JDK的ByteBuffe
1. springboot 和tomcat 2. springcloud的请求如何通过网关鉴权?3. springmvc 启动时组件的加载顺序?4. mybatis如何同时更新三条记录5. hibernate实现级联更新6.一个web程序应用程序启动时的加载流程7.如何向www.baidu.com地址发出请求时,并获取相应?8.???9.谈谈你对tcp/ip telnet udp协
堆设置 -Xms256M:初始堆大小256M,默认为物理内存的1/64 -Xmx1024M:最大堆大小1024M,默认为物理内存的1/4,等于与-XX:MaxHeapSize=64M -Xmn64M:年轻代大小为64M(JDK1.4后支持),相当于同时设置NewSize和MaxNewSize为64M -XX:NewSize=64M:初始年轻代大小 -XX:MaxNewSize=256M:最大年轻代大小(默认
前言: 这里打算开一个新的专栏,就是关于Android面试相关的一些知识点的学习,其实前几年已经有相关专栏了: 只是未对外开放,我记得当时本来是开放着的,但是因为当时去某厂去面试【很遗憾,至今未能进大厂】时被一面试官给了个建议,说博客上别把面试准备相关的东东放上面,这样会让人看了你的
类文件内容 魔数 主次版本号 常量池 访问标志 类索引、父类索引与接口索引集合 字段表集合 方法表集合 属性表集合 什么是属性表集合 字段表和方法表分别用于描述一个字段和一个方法,而它们当中都有一个属性表,属性表用于描述一些额外信息,比如对于常量字段来说,它可能包含一个指向
JDK、JRE、JVM之间的区别● JDK(Java SE Development Kit),Java标准开发包,它提供了编译、运⾏Java程序所需的各种⼯具和资源,包括Java编译器、Java运⾏时环境,以及常⽤的Java类库等● JRE( Java Runtime Environment) ,Java运⾏环境,⽤于运⾏Java的字节码⽂件。JRE中包括了JVM以及JVM⼯