![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
云养猫v2
这个作者很懒,什么都没留下…
展开
-
JDK8 字符串常量池(string pool)
字符串常量池存在运行时常量池之中(在JDK7之前存在运行时常量池之中,在JDK7已经将其转移到堆中)。字符串常量池的存在使JVM提高了性能和减少了内存开销。使用字符串常量池,每当我们使用字面量(String s=”1”;)创建字符串常量时,JVM会首先检查字符串常量池,如果该字符串已经存在常量池中,那么就将此字符串对象的地址赋值给引用s(引用s在Java栈中)。如果字符串不存在常量池中,就会实...原创 2020-08-19 09:49:17 · 994 阅读 · 1 评论 -
java boolean
在 Java 虚拟机规范中,boolean 类型则被映射成 int 类型。具体来说,“true”被映射为整数 1,而“false”被映射为整数 0。这个编码规则约束了 Java 字节码的具体实现。也就是说boolean占4个字节原创 2020-05-14 14:16:56 · 107 阅读 · 0 评论 -
如何确定线程池的线程数量?
如果是CPU密集型应用,则线程池大小设置为N+1 (N为CPU总核数)如果是IO密集型应用,则线程池大小设置为2N+1 (N为CPU总核数)线程等待时间(IO)所占比例越高,需要越多线程。线程CPU时间所占比例越高,需要越少线程。一个系统最快的部分是CPU,所以决定一个系统吞吐量上限的是CPU。增强CPU处理能力,可以提高系统吞吐量上限。但根据短板效应,真实的系统吞...转载 2020-03-25 20:23:37 · 2546 阅读 · 0 评论 -
什么是 STOP THE WORLD
等待所有用户线程进入安全点后并阻塞,做一些全局性操作的行为。当程序运行到这些“安全点”的时候就会暂停所有当前运行的线程(Stop The World 所以叫STW),暂停后再找到“GC Roots”进行关系的组建,进而执行标记和清除。在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起(除了垃圾收集帮助器之外)。Java中一种全局暂停现象,全局停顿,所有Java代码停止,native代...原创 2020-03-25 20:14:28 · 4690 阅读 · 4 评论 -
java反射中,Class.forName和classloader的区别
package test;public class Line { private static int i = 1; public static String s = getString(); static { System.out.println("i = " + i); System.out.println("静态代码块执行:lo...转载 2020-03-18 22:33:33 · 113 阅读 · 0 评论 -
JVM常用启动参数
-Xmx512m 设置最大堆内存-Xms512m 设置初始堆内存-Xmn256m 设置年轻代内存(eden+ 2 survivor space) new gen-XX:+PrintGC 或者-verbose:gc 打印简单GC日志-XX:+PrintGCDetails 开启详细GC日志-Xloggc:gc.log GC日志存放目录-XX:NewRatio=2 老年代是新生代的...原创 2020-03-16 13:08:48 · 105 阅读 · 0 评论 -
Java类加载器与双亲委派模型 破坏双亲委任模型
类与类加载器对于任何一个类,都需要有加载它地类加载器和这个类本身一同确立在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。比较两个类是否相等: 即使两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那么这两个类就必定不相同。相等是指:Class对象的equals()、isAssignableFrom()、isInstance()方法...原创 2020-03-05 16:42:47 · 108 阅读 · 0 评论 -
类加载(Class Loading)过程
概述虚拟机把描述类的数据从Class文件加载到内存、并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。在Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的。每个Class文件都有可能代表着Java语言中的一个类或接口Class文件 是一串二进制的字节流,无论以何种形式存在类加载的时机加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的...原创 2020-03-05 16:07:49 · 227 阅读 · 0 评论 -
触发JVM进行Full GC的情况
1. System.gc()此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发Full GC从而增加Full GC的频率,也增加了间歇性停顿的次数。2. 老年代空间不足老年代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误 java.lang.OutOfMemoryError:Java ...原创 2020-03-04 16:38:49 · 149 阅读 · 0 评论 -
jvm内存分配与垃圾回收
运行时数据区:线程私有:方法区、堆线程共享:虚拟机栈、本地方法栈、程序计数器虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。局部变量表里存放的是方法参数和方法内部的局部变量每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。本地方法栈是为Native方法服务的。J...原创 2020-03-04 16:30:08 · 104 阅读 · 0 评论 -
Minor GC与Full GC
在HotSpot VM的实现,它里面的GC其实准确分类有两种:1,Parital GC(局部GC):并不收集整个GC堆的模式Young GC:只收集young gen的GC, Young GC也称作"Minor GC" Old GC :只收集old gen 的GC,只有垃圾收集器CMS的concurrent collection是这个模式 Mixed GC:收集整个整个young ge...转载 2019-03-20 15:23:03 · 199 阅读 · 0 评论 -
Java四种引用
强引用:类似“Object obj = new Object();"这类的引用。只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。软引用:垃圾收集器扫描到它时,如果内存空间充足,垃圾收集器就不会回收它。如果内存空间不足了,垃圾收集器才会回收它。弱引用:只要垃圾收集器扫描到它,不管内存是否充足都会回收它。虚引用:...原创 2019-03-11 14:27:28 · 87 阅读 · 0 评论 -
OOM
Out Of Memoryjava.lang.OutOfMemoryError Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage ...原创 2019-02-19 16:17:51 · 111 阅读 · 0 评论 -
JVM 垃圾回收基本过程
转载 2019-02-19 14:39:20 · 681 阅读 · 0 评论