jvm详解(一)
文强强
有什么推荐的基础书吗各位大神
展开
-
JVM内存模型
JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区。下面对这五个区域展开深入的介绍。 1. 程序计数器1.1. 什么是程序计数器?程序计数器是一块较小的内存空间,可以把它看作当前线程正在原创 2018-01-12 11:29:12 · 228 阅读 · 0 评论 -
jvm垃圾回收(三)引用计数法和有向图 以及四种引用详解
1.采用标记计数的方法:给内存中的对象给打上标记,对象被引用一次,计数就加1,引用被释放了,计数就减一,当这个计数为0的时候,这个对象就可以被回收了。当然,这也就引发了一个问题:循环引用的对象是无法被识别出来并且被回收的。所以就有了第二种方法:2.采用根搜索算法:从一个根出发,搜索所有的可达对象,这样剩下的那些对象就是需要被回收的判断完了哪些对象是没用的,这样就可以转载 2018-01-12 11:59:33 · 3897 阅读 · 1 评论 -
jvm垃圾回收机制(二)算法和如何进行判断对象是否回收实例
说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集转载 2018-01-12 13:38:52 · 3300 阅读 · 1 评论 -
jvm(四)关于jvm常用gc收集器比较整理
单 多线程新老代特殊注意点Serial Old单老 compact Serial单新copy parnew多新copy Parallel Scavenge多新copy吞吐量Parallel Old多老 compact CMS多新 sweep最小停原创 2018-01-12 14:08:10 · 312 阅读 · 0 评论 -
11
JVM内存线程安全的单利垃圾回收垃圾检测redis nginxbtree hash索引hashmap优化索引事务单利设计模式二叉树mybatis spring mysql的 多版本控制 设计模式:单例(手写)、观察者(手写)、工厂(手写)、责任链、代理模式struts和springmvcspring的aop、ioc、原创 2018-01-12 14:42:41 · 180 阅读 · 0 评论 -
Java内存分配及值、引用的传递
关于堆栈的内容网上已经有很多资料了,这是我找的加上自己理解的一篇说明文:一、内存区域类型 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制; 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(对象可能在常量池里)(字符串常量对象存放在常量池中。); 3. 堆:存放所有new出来的对象; 4. 静态域:存放...转载 2018-03-16 15:12:05 · 141 阅读 · 0 评论 -
内存溢出的三种情况
第一种OutOfMemoryError: PermGen space 永久区内存溢出 修改PermSize MaxPermSize发生这种问题的原意是程序中使用了大量的jar或class,使java虚拟机装载类的空间不够,与Permanent Generation space有关。解决这类问题有以下两种办法:1. 增加java虚拟机中的XX:PermSize和XX:MaxPermSize参数...原创 2018-04-19 10:43:05 · 980 阅读 · 0 评论 -
jvm的方法区究竟保存了什么(和小灰探讨后转发的一个挺好的帖子)
在jvm中是这样说的:方法区是各个线程所共享的,它用于存储已经被虚拟机加载的类的信息,常量,静态变量 即时编译器编译后的代码数据等等。和小灰探讨后转发的一个挺好的帖子说的很明白方法区 在一个jvm实例的内部,类型信息被存储在一个称为方法区的内存逻辑区中。类型信息是由类加载器在类加载时从类文件中提取出来的。类(静态)变量也存储在方法区中。 jvm实现的设计者决定了类型信息的内部表现形式。如,...转载 2018-06-14 20:02:58 · 5039 阅读 · 3 评论