Java虚拟机
文章平均质量分 78
DroidMind
这个作者很懒,什么都没留下…
展开
-
【JVM系列】Java虚拟机体系结构
Java程序动态装载Java的体系结构可以在运行时决定使用的类型,装载它们,使用它们。下面由两种方式可以实现java类型的动态装载。1、Class.forName()static Class<?> forName(String className,boolean shouldInitialize,ClassLoader classLoader)className:类型的全限定名shouldInit原创 2016-01-16 19:36:17 · 914 阅读 · 0 评论 -
【JVM系列】Java类型装载、连接与初始化
深入Java虚拟机第七章读书笔记Java虚拟机通过装载、连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。装载就是把二进制形式的Java类型读入Java虚拟机中;连接就是把这种已经读入到虚拟机的二进制形式的类型数据合并到虚拟机的运行时状态中去。连接分为三步:验证、准备和解析。“验证”确保了Java类型数据格式正确并且适于Java虚拟机使用,“准备”负责为该类型分配它所需的内存原创 2015-12-15 12:13:21 · 792 阅读 · 0 评论 -
图解Java中的GC(分代收集器)
前面在Java垃圾收集算法中讲过垃圾收集算法中的分代收集器,今天看了一个视频发现里面将的也很不错,所以决定再总结一下。我们知道,在分代收集算法中堆空间被分为新生代和老年代。因为新生代中对象的存活率比较低,所以一般采用复制算法,老年代的存活率一般比较高,一般使用”标记-清理”或者”标记-整理”算法进行回收。上面的这个图已经很清楚的将堆的分区展现出来了。下面原创 2016-03-26 11:43:52 · 4749 阅读 · 4 评论 -
JVM中的垃圾收集器
下面这些收集器在新生代中使用:-XX:+UseSerialGC -XX:+UseParallelGC -XX:+UseParNewGC下面这些收集器在老年代中使用:-XX:+UseParallelOldGC -XX:+UseConcMarkSweepGCSerial收集器1、使用在新生代,使用复制算法2、它是一个单线程收集器,也就是它原创 2016-03-27 10:18:23 · 1144 阅读 · 0 评论 -
JVM中的flag设置
一、堆大小设置-Xmx3550m:设置JVM最大可用内存为3550M。-Xms3550m:设置JVM初始可用内存为3550M。-Xmn2g:设置年轻代大小为2G。-Xss128k:设置每个线程的堆栈大小为128K-XX:NewSize=4:设置年轻代大小为4-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与老年代(除去持久代)的比值为4,则年轻代与年老代所占比值为1:原创 2016-03-23 17:04:03 · 1663 阅读 · 0 评论 -
理解GC日志
一、日志分析 理解GC日志是处理Java虚拟机内存问题的基本技能,下面我们具体来看看。通过在java命令种加入参数来指定对应的gc类型,打印gc日志信息并输出至文件等策略。1、编写java代码public class ReferenceCountingGC { public Object instance = null; private static final int ONE_M原创 2016-03-20 14:59:25 · 2023 阅读 · 0 评论 -
【JVM系列】Java类加载器
一、默认类加载器Java虚拟机中系统默认的类加载器有三个:BootStrap,ExtClassLoader,AppClassLoaderJava类都是被类加载器加载的,ExtClassLoader,AppClassLoader也是Java类,显然它们也需要被加载,所以必然有一个类加载器不是Java类,并且由它来加载ExtClassLoader,AppClassLoader这两个Java类加载器,这个原创 2016-02-16 17:21:00 · 1149 阅读 · 1 评论 -
【JVM系列】Java 虚拟机指令操作码的映射表
摘自 Java虚拟机规范原创 2016-01-11 15:45:43 · 1712 阅读 · 0 评论 -
【JVM系列】Java class文件解析2
前面Java class文件解析1中介绍了一大堆的概念性的东西,下面来讲个例子。一个简单的例子:public class TestDemo { public static void main(String[] args) { System.out.println("Hello World!"); }}执行这段代码之后,就会得到一个TestDemo.class文件,进原创 2016-01-11 13:25:08 · 623 阅读 · 0 评论 -
【JVM系列】Java class文件解析1
深入Java虚拟机读书笔记一、关于class文件的几个点1、每一个Java class文件都对应于一个Java类或者接口。java class文件中包含了java虚拟机所需知道的,关于类或接口的所有信息。2、Java class文件是8位字节的二进制流,数据项按顺序存储在class文件中。占据多个字节空间的项按照高位在前的顺序分为几个连续的字节存放。3、在class文件中,可变长度项的大小和长度位于原创 2016-01-10 16:59:40 · 996 阅读 · 0 评论 -
【JVM系列】Java对象的生命周期与类型的卸载
一旦一个类被装载、连接和初始化,它就随时可以使用了。程序可以访问它的静态字段,调用它的静态方法,或者创建它的实例。类实例化类实例化有四种方式: 1、明确地使用new操作符 2、调用Class或者java.lang.Constructor对象的newInstance()方法 3、调用任何现有对象的clone()方法 4、通过java.io.lang.ObjectInputStream类的get原创 2015-12-15 21:58:34 · 1915 阅读 · 0 评论 -
Java垃圾收集算法
一、对象标记算法垃圾回收器在对堆内存进行回收前,第一件事情就是要确定哪些对象还”存活”中,哪些对象已经”死去”。一般有下面两种方法来对其进行标记。1、引用计数法原理:给对象中添加一个引用计数器,每当有一个地方引用到它,计算器的值就加1,当引用失效的时候,计数器就减1,任何时刻计数器为0的对象就是没有被使用的对象,表示可以回收。说明:这种方法在主流的虚拟机里面没有被采用,原因是它很难解决对象之间循环引原创 2016-03-20 16:20:51 · 2310 阅读 · 0 评论