基础03 JVM到底在哪里?】的更多相关文章

1.Java是编译型语言还是解释型语言? 是解释型定义: 编译型语言:把做好的源程序全部编译成二进制代码的可运行程序.然后,可直接运行这个程序. 解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束! 区别: 编译型语言,执行速度快.效率高:依靠编译器.跨平台性差些. 解释型语言,执行速度慢.效率低:依靠解释器.跨平台性好. 个人认为,java是解释型的语言,因为虽然java也需要编译,编译成.class文件,但是并不是机器可以识别的语言,而是字节码,最终还是需要 jvm的解释,才能在各个…
这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量/方法,都需要在类信息已经加载进入内存的前提下.在Java虚拟机规范中,类加载过程也就是类的生命周期包括7个部分:加载.验证.准备.解析.初始化.使用.卸载.不过我们先不写这几个阶段,先讲讲类加载器的知识,然后再来看具体的类加载过程. 1. 类加载器 关于类加载器,我主要关注两个方面,一是类加载器的…
在我们运行和调试Java程序的时候,经常会提到一个JVM的概念.那JVM到底是什么呢? JVM是Java程序的运行环境,它同时也是一个操作系统的一个应用程序.一个进程,因此他也有他自己的运行生命周期,也有自己的代码和数据空间.JVM包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一个存储方法域. 首先来说一下JVM工作原理中的jdk这个东西,不管你是初学者还是高手,是j2ee程序员还是j2se程序员,jdk总是在帮我们做一些事情.我 们在了解Java之前首先大师们会给我们提供说jdk这…
javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为0 ,将余数从下上连接起来就是二进制 10---->1010 二进制转十进制:将二进制的每一位乘以2^n ,n从0开始,n每一次加一,在将结果相加. 1001 ---->  1*2^0 +0*2^1 +0*2^2+1*2^3 = 9 将二进制换为八进制: 方式一:二进制--->十进制---&…
javascript基础03 1. 算术运算符 后增量/后减量运算符 ++ ,-- 比较运算符 ( >, <, >=, <=, ==, !=,===,!== ) 逻辑运算符( &&, || , !) 字符串的比较 字符串按字符在unicode中的码位来比较大小,并且会从开始首位字符比较大小,如果相等会比较下一位字符,直到比较出大小或字符都比较完为止. alert("101"<"3"); 返回true 2.程序流程控制 一…
写在前面 最近一个月一直在弄文件传输组件,其中用到多线程的技术,但有的地方确实需要只能有一个线程来操作,如何才能保证只有一个线程呢?首先想到的就是锁的概念,最近在我们项目组中听的最多的也是锁谁,如何锁?看到有同事使用lock(this),也有lock(private static object),那就有点困惑了,lock到底锁谁才是最合适的呢? lock 首先先上官方Msdn的说法 lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区. 如果其他线程尝试进入锁定的代码,…
Java基础-考察JVM内部结构的常用工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们可以通过jvisualvm.exe考察jvm内部结构.而jvisualvm.exe这个程序存放在JDK的安装目录下的bin目录中.当然在JDK的安装目录下的bin目录中还有jmap以及jconsole两个工具都是可以查看JVM的堆内存结构的哟!接下来我会为大家展示这三个工具的方法,他们各自有各自的优点,如果是Windows开发环境的话,我个人比较喜欢jvisualvm的,如果在L…
摘要 今天在园子里面有园友反馈关于[C#基础]说说lock到底锁谁?文章中lock(this)的问题.后来针对文章中的例子,仔细想了一下,确实不准确,才有了这篇文章的补充,已经对文章中的demo进行修改. lock(this) 一个例子 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threadin…
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明):有些步骤和相关知识点缺乏文字描述,可能会难以理解.读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的"关于博主&quo…
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎会好些,所以这篇改成详解字节码. 由于Java纯面向对象的特性,字节码只要能表示一个类的信息,就可以表示整个Java程序了,JVM只要能加载一个类的信息,就能加载整个程序了.所以,不管是字节码,还是JVM加载机制,关注点都是在类.我关注的点主要在于: 1. 由于字节码不是一次性全部加载进入内存,那么…
Java基础技术JVM面试[笔记] JVM JVM 对 java 类的使用总体上可以分为两部分:一是把静态的 class 文件加载到 JVM 内存,二是在 JVM 内存中进行 Java 类的生命周期管理 JVM 内存结构是什么样的? JVM 内存的主要分为五个区: 方法区(Method Area) 虚拟机栈(VM Stack) 本地方法栈(Native method stack) 堆(Heap) 程序计数器(Program Counter Register) 堆(Heap) 堆会在虚拟机启动时进…
线程基础03 6.用户线程和守护线程 用户线程:也叫工作线程,当线程的任务执行完或者通知方法结束.平时用到的普通线程均是用户线程,当在Java程序中创建一个线程,它就被称为用户线程 守护线程(Daemon):一般是为工作线程服务的,当所有的用户线程结束,守护线程自动结束 常见的守护线程:垃圾回收机制 例子1:如何将一个线程设置成守护线程 package li.thread.method; public class ThreadMethodExercise { public static void…
1.前言 理解JVM的垃圾回收机制(简称GC)有什么好处呢?作为一名软件开发者,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java程序. 在学习GC前,你应该知道一个技术名词:"stop-the-world" ,无论你选择哪种GC算法,"stop-the-world"都会发生."stop-the-world"意味着JVM停止应用程序,而去进行垃圾回收.当"stop-the-world&quo…
众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成.本文介绍JVM进行垃圾回收的各种算法. 1. 如何确定某个对象是垃圾 1.1. 引用计数法 1.2. 可达性分析 2. 典型的垃圾回收算法 2.1. 标记-清除算法(Mark-Sweep) 2.2. 复制算法(Copying) 2.3. 标记-整理算法(Mark-Compact) 2.4. 分代收集算法(Generational Collection) 3. 典型的垃圾收集器 3.1. Serial/Serial Old…
首先是JDK JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK).在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre. 然后我们来看JRE JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库.JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具…
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10697554.html ,多多支持哈! 一.什么是GC? GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法.Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理.要请求垃圾收集,可以调用…
首先是JDKJDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK).在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre.然后我们来看JREJRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库.JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编…
1. JVM内存模型 Java虚拟机在程序执行过程会把jvm的内存分为若干个不同的数据区域来管理,这些区域有自己的用途,以及创建和销毁时间. JVM内存模型如下图所示 1.1 程序计数器 程序计数器(Program Counter Register),也有称作为PC寄存器.JVM中的程序计数器跟汇编语言中的程序计数器在功能上是相同的,即指示待执行指令的地址.当 CPU 需要执行指令时,需要从程序计数器中得到当前需要执行的指令所在存储单元的地址,然后根据得到的地址获取到指令,在得到指令之后,程序计…
数据库和VS的连接,实现数据的同步,让用户的一切信息都可以在数据库中留下记录. ADO.NET基础      它是连接所有数据库的一种特殊的技术,提供对不同的数据库统一操作接口. 在VS中也可以添加数据库,也可以在其中使用SQL语句,不需要在sql数据库中创建,这样用起来就特别方便,便于数据库的快速读取.<基于服务的数据库>        在VS中创建的mdf和数据库中的一样,它跟随着项目走,用起来方便运行时会自动附加(Attach).打包时首先关闭mdf与数据库的连接,才行. {ado.ne…
<?php // day01:数据类型 //01.字符串 $x = "hello world"; echo $x; echo "<br>"; $y = 'hello world'; echo $y; echo "<br>"; var_dump($y); echo "<hr>"; //02.整数 $num1 = 555; var_dump($num1); echo "<b…
1. 内存模型以及分区,需要详细到每个区放什么. //运行时数据区域 方法区 Method Area 各个线程共享的内存区域 存储已被虚拟机加载的类信息 常量 静态变量 即时编译器编译后的代码 虚拟机栈 VM Stack 线程私有 Java方法执行的内存模型 每个方法执行的同时会创建一个栈帧  用于存储局部变量表 操作数栈 动态链接 方法出口等信息 每一个方法从调用到执行完成的过程 对应一个栈帧在虚拟机栈中入栈到出栈的过程  局部变量表存放了编译器可知的各种基本数据类型(boolean byte…
工作中对日期的处理是经常遇到的,需求可能多种多样,因此重点介绍. 1.获取当前日期 select NOW() -- 结果:2015-10-28 22:41:11 ),NOW() -- 结果 2015-10-28 22:43:34 0 2015-10-28 22:43:34 ),SYSDATE() -- 结果 2015-10-28 22:46:48 0 2015-10-28 22:46:52 -- NOW()是sql执行前就得到,而SYSDATE()是该函数执行时才得到,一般来说NOW()已经足够…
1.简单了解浏览器是如何渲染页面和加载页面            浏览器就是通过HTTP 协议与服务器进行通信,取到数据之后进行渲染的过程,如图:    这图是园友的看着挺符合我思路就直接拿来用了,从服务器端返回的是HTML代码,浏览器渲染.加载也是从这里开始: 浏览器有不同的厂商,所以内部肯定会有不同的处理方式,所以这里只是记录一些简单的,况且本篇文章属于基础范畴: 1.浏览器下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的.      2.在渲染到页面的某一部分时,其上面…
03.01逻辑运算符 &&,and ||,or xor 这里只强调一点用and或者or的话,记得加上括号,不然可能出错,至于原因我也不是很清楚,反正尽量直接用&&,||就行了,C中也是用这两个. 03.02位运算符(Bitwise Operators) &,|,^ php中的位运算符也是针对整数.除非两个运算符都为字符串,不然就将其中一个不是整数的转换成整数,如果两个都是字符串,则就算的长度以比较短的为主(除了|外是比较长的为主),按照字符为单位(每一个字符都转换成…
引言 之前我们学习了 JVM 基本介绍 以及 什么样的对象需要被 GC ,今天就来学习一下 JVM 在判断出一个对象需要被 GC 会采用何种方式进行 GC.在学习 JVM 如何进行垃圾回收方法时,发现所谓的 JVM 垃圾回收思想和现实生活的场景有很多相似的地方.所以本文用餐厅回收餐桌的方式类比 JVM 垃圾回收算法,应该能帮助 JVM 学习的理解和记忆. 经典垃圾回收算 标记-清除(Mark-Sweep) 研发园开了家新餐厅,餐厅老板在考虑如何回收餐盘时首先使用了最简单的方式,那就是服务员在顾客…
关键词 常用关键字53个(含2个保留字): 1.保留关键字(2个) const --常量 常数:用于修改字段或局部变量的声明. goto--转到 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令 2.访问修饰符的关键字(3个) public (公有的) 可跨包 protected (受保护的) 当前包内可用 private (私有的) 当前类可用 3.定义类.接口.抽象类和实现接口.继承类的关键字.实例化对象(6个) class (类): public class A(){}花括号里是已…
如果要渲染半透明物体,那么就需要用到透明度混合. 需要注意的有这几点: 1.设置标签:Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} 将物体放在合适的渲染队列中 2.关闭深度写入:ZWrite Off 具体原因见下面 3.Blend混合命令:Blend SrcAlpha O…
我是一个线程,生活在JVM(Java虚拟机)中, 这一段日子过得有些无聊,整个世界似乎只有这一个人,天天忙着执行代码,想休息一下都很难. 我听说人类写的代码中有些特殊的地方,叫做临界区,比如synchronized修饰的方法或者代码块,他们非常神奇,在同一时刻JVM老大只允许一个线程进入执行. 实际上,老大设置了一把锁,抢到了这把锁就可以执行,否则只能阻塞,等待别人释放锁. 老大说,阻塞就是不用干活了,老老实实地等着就行. 竟然还有这等美事! 赶紧让我阻塞一次吧. 可是老大又说:“每次设置锁我都…
一直对jvm看了又忘,忘了又看的.今天做一个笔记整理存放在这里. 我们先看一下JVM的内存模型图: 上面有5个区,这5个区干嘛用的呢? 我们想象一个场景: 我们有一个class文件,里面有很多的类的定义是不是,类的定义放在什么地方呢?类的定义就放在方法区里面. 程序在运行时会产生很多的对象,比如LinkList等这些对象就存放在堆里面. 栈: 我们的程序在运行时本质上就是启动线程在运行,比如main函数就是一个主线程.一个main主线程可以有很多的子线程. 线程在工作就是执行我们的各种方法.方法…
1.jvm定义 JVM就是java虚拟机,它是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能.JVM有自己完善的硬件结构,例如处理器.堆栈和寄存器等,还具有相应的指令系统. 2.jvm作用 JVM是java字节码执行的引擎,还能优化java字节码,使之转化成效率更高的机器指令. JVM中类的装载是由类加载器和它的子类来实现的,类加载是java运行时一个重要的系统组件,负责在运行时查找和装入类文件的类. 不同的平台对应着不同的JVM,在执行字节码(class文件)时,JVM负责将每一…