jvm
iostream1001001
一个积极上进的程序猿。
展开
-
1-我眼中的jvm
JVM的封装思想在我的眼中,jvm很类似操作系统,都是在干管理内存,控制线程和并发的工作,只是OS还要管理外设,而jvm没有干这个活,笔者认为它俩之间的核心本质是一样的,就是封装。 操作系统是面向硬件的封装一个例子:对于用户而言,操作系统提供了操作硬件的接口,一个printf(“操作系统”); 就搞定了文字到0,1数据流再到像素点阵的转换,”操作系统”先在内存中被转化成0/1数据流原创 2017-12-08 11:19:54 · 139 阅读 · 0 评论 -
2-jvm概述
JVM的运行的流程:图一:JVM运行流程所有的Java程序必须保存在*.java的文件之中,称为源代码。这些源代码不能直接执行,必须使用javac.exe命令把源代码编译成为*.class文件(编译器)。使用java.exe命令在JVM进程中解释此程序。 JVM将所需要运行的*.class文件加载到JVM进程中需要有一个类加载器(ClassLoader,系统会提供默认类原创 2017-12-08 12:02:10 · 198 阅读 · 0 评论 -
3-JVM的GC算法(1)
GC算法概述:JAVA语言最大的特点在于具备良好的垃圾收集特点,也就是GC是整个java之中最重要的安全保证,帮助开发者写出合理的代码。整个JVM中的GC处理机制:对不需要的对象进行标记,而后进行清除。 堆内存的划分图一:java堆内存的划分 1.8之后永久代改成了元空间 永久代只有HotSpot中有 Oracle 试图将HotSpot和JRockit的标准合并为一个原创 2017-12-08 17:27:47 · 217 阅读 · 0 评论 -
4-JVM的GC算法(2)
新生代可用的GC策略 首先介绍一种Stop-The-World(STW):Java中一种全局暂停的现象,全局停顿,所有Java代码停止,native代码可以执行,但是不能和JVM交互。这个过程多半由于GC引起,包括:(1)Dump线程;(2)死锁检查;(3)堆Dump。 串行GC(Serial Copying)复制(Copying)清理算法A、 扫描年轻代中所有存活的对象;B、 使用Minor G...原创 2017-12-08 17:53:18 · 228 阅读 · 0 评论 -
5-JVM的GC算法(3)
本文主要介绍G1收集器的核心思想和工作过程。原创 2017-12-08 19:22:57 · 176 阅读 · 0 评论 -
6-java引用类型
Java引用概述引用是开发的灵魂,直接决定了对象占用内存的时间,在JDK1.2之后提出了四种引用方式1、 强引用:当JVM空间不足,JVM宁可出现OutOfMemoryError错误停止,也需要空间保存,并且不回收空间 Object obj=new Object()2、 软引用:当内存不足,进行对象回收处理,往往用于高速缓存Mybaits3、 弱引用:不管内存是否紧张,有垃圾就回收原创 2017-12-08 20:03:53 · 171 阅读 · 0 评论 -
8-ClassLoader
ClassLoader的核心作用是:加载指定路径的classJVM将所需要运行的*.class文件加载到JVM进程中需要有一个类加载器(ClassLoader,系统会提供默认类加载器,我们也可以自己写),类加载器的好处就在于我们可以随意指定*.class文件的位置(包括网络上的)。类的初始化时间调用ClassLoader类的loadClass方法加载一个类,并不是对类的主动使用,不会导原创 2017-12-08 22:25:19 · 175 阅读 · 0 评论 -
7-类的加载、连接、初始化
Java虚拟机的生命周期 在下面的集中情况下会结束java虚拟机1、 执行了System.exit()2、 程序正常结束3、 程序在运行过程中遇到的异常或错误而异常终止4、 由于操作系统出现错误 类的加载、连接、和初始化加载:查找并加载的类二进制数据(加载到内存)将类的class文件中的二进制数据读入到内存中,将其运行时数据区的方法区,然后在堆内存上创原创 2017-12-08 21:04:39 · 211 阅读 · 0 评论