jvm
RAHS
西电毕业,互联网二线厂
展开
-
JVM——类加载,双亲委派模型,如何实现自定义类加载器
网上一搜一大把:关于自己实现类加载器,主要是继承ClassLoader类将 .class文件 转化为字节数组,就是实现一个loadByte方法其次,重写findClass方法,这个方法是用来在父类加载器无法加载饿时候(抛出 ClassNotFoundException)的时候,调用自己的这个方法实现加载。https://www.cnblogs.com/wxd0108/p/6681618.html但Tomcat 是 违背双亲委派模型的为了实现隔离,比如:WebappClassLoader:原创 2020-08-10 11:25:00 · 181 阅读 · 0 评论 -
JVM——Mark Word
之前学JVM的时候没有太关注过对象头,以为不是很重要,今天学Java锁机制的偏向锁遇到了,特此回来补一下。HotSpot虚拟机的对象头包括两部分信息,第一部分 用于存储对象自身运行时数据,如:哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,而这部分被官方称为“Mark Word”https://baijiahao.baidu.com/s?id=16395665148...原创 2020-04-27 10:23:16 · 793 阅读 · 0 评论 -
Java——关于Minor GC和Major GC
在介绍之前,首先简单说一下堆内存的结构堆内存在大的结构上分为:年轻代和年老代。其中年轻代又分为Eden区和Survivor区。Survivor区又分为两个相等的区域,一个是fromspace区,另外一个是tospace区。年轻代内存=Eden+其中一个Survivor区(8:1),也就是说两个Survivor区,虚拟机只使用了其中一个。当新生代进行复制回收时,会将Edenn和Survivor ...原创 2020-04-19 17:15:57 · 249 阅读 · 0 评论 -
Java——各种垃圾收集器
转载博客Serial收集器(复制算法)新生代单线程收集器,标记和清理都是单线程,优点是简单高效。是client级别默认的GC方式,可以通过-XX:+UseSerialGC来强制指定。Serial Old收集器(标记-整理算法)老年代单线程收集器,Serial收集器的老年代版本。ParNew收集器(停止-复制算法) 新生代收集器,可以认为是Serial收集器的多线程版本,在多核CPU...原创 2020-04-19 17:04:52 · 314 阅读 · 0 评论 -
Java——判断无用的类
该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。加载该类的 ClassLoader 已经被回收。该类对应的 java.lang.Class 对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。虚拟机可以对满足上述 3 个条件的无用类进行回收,这里说的仅仅是“可以”,而并不是和对象一样不使用了就会必然被回收。...原创 2020-04-19 16:10:26 · 262 阅读 · 0 评论 -
JVM——判断常量是废弃常量
假如在常量池中存在字符串 “abc”,如果当前没有任何 String 对象引用该字符串常量的话,就说明常量 “abc” 就是废弃常量,如果这时发生内存回收的话而且有必要的话,“abc” 就会被系统清理出常量池。...原创 2020-04-19 16:04:51 · 324 阅读 · 0 评论 -
Java——元空间
转载:https://www.iteye.com/blog/aoyouzi-2243929转载 2020-04-19 12:05:51 · 299 阅读 · 0 评论 -
Java——GC(判断对象是否存活算法)
前言我们由前面可以知道 ,程序计数器、虚拟机栈、本地方法栈 3个区域随线程而生,随线程而灭。每一个栈帧中分配多少内存基本上是在类结构确定下来就已知的(在运行期会由JIT编译器进行一些优化)。所以这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为在方法结束或者线程结束时,内存自认就跟着回收了。所以我们主要讨论的是 Java堆和方法区的内存分配和回收。垃圾收集器...原创 2020-04-18 10:14:38 · 273 阅读 · 0 评论 -
Java——OutOfMemory代码
idea内存分析工具:JProfiler 11安装教程HeapException in thread "main" java.lang.OutOfMemoryError: Java heap spaceimport java.util.ArrayList;/**VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError*堆的最小值...原创 2020-04-17 11:49:41 · 210 阅读 · 0 评论 -
Java——jvm(二)
本文几乎全部为深入理解Java虚拟机(周志明)原文内容,仅用于本人学习对象的创建1. 类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数时否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。2.分配内存在第一步类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载...原创 2020-04-03 11:40:31 · 129 阅读 · 0 评论 -
Java——jvm(一)
JDK1.8去掉了方法区(Method Area),新增了元空间(Metaspace)JVM运行时数据区域:原创 2020-04-03 10:32:41 · 147 阅读 · 0 评论