JVM
文章平均质量分 65
qqqqq1993qqqqq
这个作者很懒,什么都没留下…
展开
-
hotspot对象相关
对象的创建过程:几点补充:1.对象所需的内存大小在类加载后便确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆划分出来。用过的内存在一边,空闲的内存在另一边,中间有一个指针作为指示器,这种分配内存的方式称为指针碰撞。如果Java堆中的内存并不是规整的,已使用的内存和空闲内存相互交错,那就没办法简单的进行指针碰撞了,虚拟机就必须维护一个队列表,记录哪些内转载 2017-05-11 21:32:12 · 265 阅读 · 0 评论 -
JVM——锁优化
锁优化HotSpot虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等,这些技术都是为了在线程之间更高效地共享数据,以及解决竞争问题,从而提高程序的执行效率。转载 2017-07-31 20:12:13 · 416 阅读 · 0 评论 -
Java中的equals和==,字符串常量池介绍
出处:http://blog.csdn.net/seu_calvin/article/details/520890401. Java中数据类型分类1.1 基本数据类型又称为原始数据类型,byte,short,char,int,long,float,double,boolean,他们之间的比较应该使用(==),比较的是他们的值。1.2 复转载 2017-08-14 10:58:28 · 386 阅读 · 0 评论 -
JVM参数设置(GC相关)
http://blog.csdn.net/java2000_wl/article/details/8042010 查看jvm参数java -XX:+PrintFlagsFinal>final.txt打印到文本文件中查看。JVM参数的含义参数名称含义默认值-Xms初始堆大小转载 2017-07-26 18:25:07 · 575 阅读 · 0 评论 -
深入理解G1垃圾收集器
(http://blog.jobbole.com/109170/)了解G1G1的第一篇paper(附录1)发表于2004年,在2012年才在jdk1.7u4中可用。oracle官方计划在jdk9中将G1变成默认的垃圾收集器,以替代CMS。为何oracle要极力推荐G1呢,G1有哪些优点?首先,G1的设计原则就是简单可行的性能调优开发人员仅仅需要声明以下参数即可:转载 2017-05-13 19:48:17 · 4425 阅读 · 1 评论 -
JVM之内存分配与回收策略
基本规则:对象主要分配在新生代的Eden区,如果启动了本地线程分配缓冲,则先在TLAB上分配,少数情况下也可能直接进入老年代。分配的规则不是100%确定的,其细节取决于当前使用的是哪一种垃圾收集器组合。大对象直接进入老年区,虚拟机设置超过多少大小的对象直接进入老年去,避免在新生代发生过多复制操作。长期存活的对象进入老年代:经历了一次minor GC 后,存活的对象从ed转载 2017-05-15 14:22:29 · 968 阅读 · 0 评论 -
HotSpot中的垃圾收集
指导理念:分代收集,根据对象的存活周期的不同将内存划分为几块。一般是把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。在新生代中,每次垃圾收集时都发现有大批对象死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。而老年代中因为对象存活率高、没有额外空间对它进行分配担保,就必须使用“标记-清理”或“标记-整理”算法来进行回收。Oo转载 2017-05-12 19:35:11 · 282 阅读 · 0 评论 -
JVM——虚拟机字节码执行引擎(运行时栈帧结构、方法调用(解析,动静态分配)、字节码解释引擎)
1 运行时栈帧结构栈帧( Stack Frame ) 是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈( Virtual Machine Stack ) 的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始至执行完成的过程 ,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。(1)局部变量表转载 2017-08-16 23:30:22 · 576 阅读 · 0 评论 -
Minor GC、Major GC和Full GC之间的区别
(http://www.importnew.com/15820.html)Minor GC从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC。这一定义既清晰又易于理解。但是,当发生Minor GC事件的时候,有一些有趣的地方需要注意到:当 JVM 无法为一个新的对象分配空间时会触发 Minor GC,比如当 Eden转载 2017-05-13 21:54:55 · 603 阅读 · 0 评论 -
JVM系列之垃圾收集简介
垃圾收集关注三个问题:哪些对象需要回收?什么时候回收?如何回收?判断对象是否可被回收:1.引用计数法给每个对象添加一个引用计数器,当有新的引用就加1,当引用失效时则减1,当为0时,说明对象不会再被引用。会出现bug的情况:当两个对象互相引用时,即使对象已经为null,仍然无法被回收2.可达性分析算法在主流的商用程序语言(Java、C#,甚至包括前面提转载 2017-05-12 14:37:42 · 276 阅读 · 0 评论 -
JVM——类文件结构
http://blog.csdn.net/zhoufenqin/article/details/51045890http://blog.csdn.net/ochangwen/article/details/51457398http://blog.csdn.net/u010349169/article/category/2620885无关性的基石各种不同平台的虚拟机与转载 2017-08-16 15:10:26 · 394 阅读 · 0 评论 -
JVM——Java中的线程安全
线程安全定义:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的它要求线程安全的代码都必须具备一个特征:代码本身封装了所有必要的正确性保障手段(如互斥同步等),令调用者无须关心多线程的问题,更无须自己采取任何措施来保证多线程的正确调用。Java语言中的转载 2017-07-31 18:55:51 · 484 阅读 · 0 评论 -
JVM——java内存模型与线程
主内存与工作内存Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量(Variables)与Java编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不会存在竞争问题。Java内存模型规定了所有的变量都存储在主内存(Main Mem原创 2017-07-31 16:49:52 · 311 阅读 · 0 评论 -
【简记】Java Web 内幕——类加载机制,类与类加载器
本文内容:类加载机制类与类加载器类加载机制类加载的时间顺序加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initiallization)、使用(Using)和卸载(Unloading)。加载、验证、准备、初始化、卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段不一定:它在某些情原创 2017-07-11 21:08:31 · 379 阅读 · 0 评论 -
G1收集器和CSM收集器对比
(http://blog.csdn.net/zhanggang807/article/details/45956325)回顾分代垃圾回收和CMS并发标记清除(CMS)收集器(也叫并发低延迟收集器)回收年老代垃圾。它通过和应用线程并发的执行大部分垃圾收集工作的方式来尝试最小化垃圾回收引起的暂停。正常情况下并发低延迟收集器不会复制或者压缩活跃对象。一次垃圾收集的完成不必移动活跃转载 2017-05-13 21:13:05 · 3639 阅读 · 3 评论 -
JVM内存区概述——InteviewOrientation
java虚拟机所管理的内存包含以下几个运行时数据区域:原创 2017-05-11 16:05:03 · 364 阅读 · 0 评论