JVM
JVM
狒狒你呐
这个作者很懒,什么都没留下…
展开
-
JVM
1. JVM体系结构概览1.1程序计数器指向当前线程正在执行得到字节码指令的地址(行号)为什么需要程序计数器?Java是多线程的,意味着线程切换确保多线程情况下的程序正确执行1.2虚拟机栈/java栈栈(Stack):数据结构,像个杯子,方法的调用链入口和出口只有一个入栈出栈先进后出(FILO)虚拟机栈存储当前线程运行方法所需的数据,指令,返回地址栈帧每个方...原创 2020-03-31 01:33:51 · 88 阅读 · 0 评论 -
jvm
第一章整数的表达原码:第一位为符号位(0为正数,1为负数)500000101负数反码:符号位不动,原码取反正数反码:和原码相同 负数补码:符号位不动,反码加1正数补码:和原码相同-6原码: 10000110反码: 11111001补码: 11111010-1原码: 10000001反码: 11111110补码: 11111111...原创 2018-12-17 07:38:51 · 104 阅读 · 0 评论 -
JVM调优总结(8):反思
垃圾回收的悖论所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。当然,上面是从技术角度出发解决垃圾回收带来的问题,但是从系转载 2017-10-11 08:46:16 · 177 阅读 · 0 评论 -
JVM调优总结(7):调优方法
JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里JProfiler:商业软件,需要付费。功能强大。详细说明参考这里VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。如何调优观察内存释放转载 2017-10-11 08:44:12 · 173 阅读 · 0 评论 -
JVM调优总结(6):新一代的垃圾回收算法
垃圾回收的瓶颈传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个相对较小转载 2017-10-11 08:39:14 · 143 阅读 · 0 评论 -
JVM调优总结(5):典型配置
以下配置主要针对分代垃圾回收算法而言。堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为147转载 2017-10-11 08:38:10 · 172 阅读 · 0 评论 -
JVM调优总结(4):分代垃圾回收
为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量,这些转载 2017-10-10 23:54:16 · 139 阅读 · 0 评论 -
JVM调优总结(2):基本垃圾回收算法
可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二转载 2017-10-10 23:39:43 · 176 阅读 · 0 评论 -
JVM调优总结(1):一些概念
数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类型包括:转载 2017-10-10 23:06:13 · 194 阅读 · 0 评论 -
JVM调优总结(3):垃圾回收面临的问题
如何区分垃圾上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进行程序执行地方转载 2017-10-10 23:48:48 · 165 阅读 · 0 评论 -
java内存泄漏,jvm内存溢出
http://blog.csdn.net/wisgood/article/details/16818243内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件设计缺陷引起的。 内存泄漏可以分为4类: 1) 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,转载 2017-10-18 13:43:10 · 283 阅读 · 0 评论