
JVM
u013063153
这个作者很懒,什么都没留下…
展开
-
JVM虚拟机原理
虚拟机,就是一台虚拟的机器。它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机。系统虚拟机:例如Visual Box、VMare,它们完全是对物理计算机的仿真,提供了一个可以运行完整操作系统的软件平台。程序虚拟机:例如JVM,它专门为执行单个计算机程序而设计,在JVM中执行的指令为Java的字节码指令。无论是系统虚拟机还是程序虚拟机,在上面运行的软件原创 2017-08-12 21:21:31 · 758 阅读 · 0 评论 -
JVM系列三:JVM参数设置、分析
原文:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具转载 2017-08-12 13:32:50 · 310 阅读 · 0 评论 -
JVM G1收集器
可以像CMS收集器一样,GC操作与应用的线程一起并发执行紧凑的空间内存区间且没有很长的GC停顿时间需要可预测的GC暂停耗时不想牺牲太多吞吐量性能启动后不需要请求更大的Java堆使用场景:1.Full GC 次数太频繁或者消耗时间太长2.对象分配的频率或代数提升显著变化3.受够了太长的垃圾回收或者内存整理时间(超过0.5-1s)原创 2017-07-22 22:21:41 · 424 阅读 · 0 评论 -
JVM CMS GC收集器
XX:+UseConsMarkSweepGC算法:根搜索四个阶段:CMS-initial-mark 对象是否可到达 会出现程序暂停的对象CMS-concurrent-mark 确定哪些对象不可到达CMS-remark 再次确认对象是否可到达,会出现程序暂停的对象CMS-concurrent-sweep 会导致内存碎片。要求系统低延迟的情况会选择CMS。原创 2017-07-22 22:04:58 · 529 阅读 · 0 评论 -
JVM GC算法和种类【重要】
原文:http://www.cnblogs.com/smyhvae/p/4744233.html本文主要内容:GC的概念GC算法 引用计数法(无法解决循环引用的问题,不被java采纳) 根搜索算法 现代虚拟机中的垃圾搜集算法: 标记-清除 复制算法(新生代) 标记-压缩(老年代) 分代收集转载 2017-07-22 21:33:09 · 667 阅读 · 0 评论 -
JAVA对象内存逃逸技术
“栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 ” 可见,垃圾回收GC是针对堆Heap的,而栈因为本身是FILO - first in, last out原创 2017-07-22 21:01:28 · 2389 阅读 · 0 评论 -
JVM的Metaspace,JAVA8以前是Permanent Area
JVM为啥从Permanent Area转向Metaspace呢?1. Parmanent容易出现OOM。2. GC,Parmanent发生的也是Full GC。Metaspace的2个特征:1. 使用的不是JVM的内存空间,使用的是OS的内存空间。2. Metaspace用动态的伸缩,延缓GC的到来。Permanent Area发生GC条件:1.原创 2017-07-22 15:01:32 · 441 阅读 · 0 评论 -
JVM Old Generation的Full GC日志字段不详解
在一次程序运行时报的错误:PSYoungGen字段的解释,见http://blog.youkuaiyun.com/u013063153/article/details/75732050ParOldGen字段的解释:Par是算法7129K:GC发生前,所占大小7129K:GC发生后,所占大小7168K:Old Generation的大小8114K:原创 2017-07-22 14:37:34 · 676 阅读 · 0 评论 -
JVM Young Generation的minor GC日志字段不详解
在一次程序运行时报的错误:[GC (Allocation Failure)[PSYoungGen:2336K->288K(2560K)]8274K->6418K(9728K), 0.0112926secs][Times: user=0.06 sys=0.00, real=0.01 secs]PSYoungGen:表示GC的类型,Young Generation的GC2336原创 2017-07-22 14:23:22 · 558 阅读 · 0 评论 -
JVM的GC中对象的age以及JVM内存的分配策略
Young Generation中的GC叫minor GC,Eden中的对象拷贝到S。Old Generation中的GC叫Full GC。age,官方文档默认为15,age也相当于计数器,每次GC,age+1,age代表GC的次数。在GC时,S中的对象的age一样的这批数据大于S空间1/2的话,此时age大于或者等于这批对象的对象,就会直接进入Old Generation,而不用达到原创 2017-07-22 13:57:09 · 1280 阅读 · 0 评论 -
JVM GC的核心参数: -XX:Newratio -XX:Newsize -XX:Maxnewsize -XX:Surviorratio
-XX:Newratio: 设置Yong 和 Old的比例,比如值为2,则Old Generation是 Yong Generation的2倍,即Yong Generation占据内存的1/3-XX:Newsize : 设置Yong Generation的初始值大小-XX:Maxnewsize:设置Yong Generation的最大值大小-XX:Surviorratio : 设置E原创 2017-07-22 13:32:09 · 33053 阅读 · 0 评论 -
JVM Young大小对GC性能的影响
JVM Yong GenerationEdenFrom ToOld Generaion经过几次GC后依然存在的对象或者说一开始就比较大的对象。GC过程:Eden的对象拷贝到To(S2)中,To满了,和From交换,GC超过一定次数,就放到Old Generation中。Old Generation满了,发生Full GC。放在Old Gen原创 2017-07-22 13:12:05 · 4615 阅读 · 0 评论 -
JVM GC的内存结构:Young Generation(Eden,from,to)、Old Generation、Permanent Generation
Yong Generation: Object和基本活跃的区域Eden:小Object出生的地方(大的Object可能直接进Old Generation)From(S1):To(S2):Eden中的对象被GC,先放在To中。To快满时,From和To交换。(From 和 To大小一样,是Eden和Old Generation的缓冲地带)Old Generation:经过原创 2017-07-20 21:52:56 · 3105 阅读 · 0 评论 -
JVM 三大性能调优参数-Xms -Xmx -Xss
-Xss规定了每个线程堆栈的大小。一般情况下256K是足够了。影响了此进程中并发线程数大小。-Xms初始的Heap的大小。-Xmx最大Heap的大小。在很多情况下,-Xms和-Xmx设置成一样的。这么设置,是因为当Heap不够用时,会发生内存抖动,影响程序运行稳定性。原创 2017-07-20 21:25:37 · 57234 阅读 · 2 评论 -
JVM线程引擎和内存共享区的交互及程序计数器
多线程的Java应用程序:线程:从面向对象(OOP)的角度而言,相当于一个对象,该对象中具有执行代码,同时也有要处理的数据,数据包含Thread工作时要访问的数据,同时也包含线程的Stack。在Stack中,包含Thread本地的数据,也包含了拷贝的全局数据。从面向过程的角度而言,线程 = 代码 + 数据。Main Memory:全局共享内存空间程序计数器(Progra原创 2017-07-20 21:05:23 · 601 阅读 · 0 评论 -
JVM内存三大核心区域不详解及示例
JVM运行时数据区域的三大核心:Heap Area1.存储的全部都是Object对象实例,对象实例中一般都包含了其数据成员以及与该对象对应的Class的信息。2.一个JVM实例在运行的时候只有一个Heap区域,该区域被所有的线程共享。Method Area(静态成员区)1.包含整个程序的Class、static成员等。2.被所有的线程共享。Stack Area1.S原创 2017-07-20 20:36:11 · 699 阅读 · 0 评论 -
Java内存溢出(OOM)异常完全指南
原文:http://luecsc.blog.51cto.com/2219432/1948800这也许是目前最为完整的Java OOM异常的解决指南。1、java.lang.OutOfMemoryError:Java heap spaceJava应用程序在启动时会指定所需要的内存大小,它被分割成两个不同的区域:Heap space(堆空间)和Permgen(永转载 2017-07-20 13:06:56 · 1520 阅读 · 0 评论 -
JVM内存管理机制
原文:JAVA 内存管理总结1.java 是如何管理内存的?Java 的内存管理就是对象的分配和释放问题。(两部分)分配 :内存的分配是由程序完成的,程序员需要通过关键字 new 为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。 释放 :对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作。但同时,它也加重了转载 2017-07-12 16:20:08 · 886 阅读 · 0 评论 -
Java JVM 工作原理详解
原文:http://wiki.jikexueyuan.com/project/java-special-topic/virtual-machine.html一、类加载器 首先来看一下 java 程序的执行过程。从这个框图很容易大体上了解 java 程序工作原理。首先,你写好 java 代码,保存到硬盘当中。然后你在命令行中输入javac YourClassName.转载 2017-07-12 16:15:43 · 820 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
原文:http://www.cnblogs.com/lcword/p/5857918.html堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统 下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.转载 2017-07-05 14:27:17 · 314 阅读 · 0 评论