JVM
fjkxyl
保剑锋从磨砺出,折磨自己,锻炼自己,成就自己
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java内存区域
1、程序计数器作用:当前线程所执行的字节码的行号指示器。就是工作室通过改变这个计数器的值来选取一条需要执行的字节 码指令、分之、循环、跳转、异常猪濑、线程恢复等功能,都需要一来这个程序计数器来完成。注意:一个内核同一时间只能处理一条线程指令,因此为了线程切换后能恢复到正常的执行位置,每条线程都需 要一个独立的程序计数器,各条线程之间的计数器五不影响,独立存储。-------原创 2016-10-25 14:17:33 · 287 阅读 · 0 评论 -
JVM调优:反思
垃圾回收的悖论 所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应 用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加 G1算法的一个重要原因。 当然,上面是从技术角度出发解决垃圾回收带来的问原创 2016-12-19 15:38:25 · 246 阅读 · 0 评论 -
JVM调优:典型配置举例一
以下配置主要针对分代垃圾回收算法而言。堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典原创 2016-12-19 15:26:55 · 298 阅读 · 0 评论 -
JavaMelody-监控web应用
JavaMelody 能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、spring、 Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。1、下载javamelody-core原创 2017-03-31 08:51:40 · 280 阅读 · 0 评论 -
java 内存区域及存放内容
1、程序计数器:程序执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖程序计数器完成。2、栈主要存储的是:局部变量表、操作栈、动态链接、方法出口等 信息局部变量表:存放的是编译器可知的各种基本数据类型(boolean、byte、char、short、int、float、long、原创 2017-04-10 17:23:45 · 2784 阅读 · 0 评论 -
Java虚拟机学习 - 对象访问
对象访问会涉及到Java栈、Java堆、方法区这三个内存区域。如下面这句代码:[java] view plain copy print?Object objectRef = new Object(); 假设这句代码出现在方法体中,"Object objectRef” 这部分将会反映到Java栈的本地变量中,作为一个转载 2017-04-11 13:39:07 · 233 阅读 · 0 评论 -
java 如何判断对象已死
已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了:引用计数给对象添加一个引用计数器,每当有一个地方引用他,计算器就加1;当引用失效时,计数器减1;任何时刻计数器为0的对象就是死的对象。 1. 这种方式被很多技术所采用,如FlashPlayer(AS3)、Python等,但是Java没有采用这种算法,原因是它很难解决对象之间相互循环引用的问题,例如转载 2017-04-11 14:50:37 · 1280 阅读 · 0 评论 -
Java垃圾回收器总结
什么是Java垃圾回收器Java垃圾回收器是Java虚拟机(JVM)的三个重要模块(另外两个是解释器和多线程机制)之一,为应用程序提供内存的自动分配(Memory Allocation)、自动回收(Garbage Collect)功能,这两个操作都发生在Java堆上(一段内存快)。某一个时点,一个对象如果有一个以上的引用(Rreference)指向它,那么该对象就为活着的(Live),转载 2017-04-11 15:53:36 · 275 阅读 · 0 评论 -
java 垃圾收集相关常用参数
参数描述UseSerialGC虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial+Serial Old的手机器组合进行内存回收UseParNewGC打开此开关之后,使用ParNew+CMS+Serial Old的收集器组合进行内存回收,Serial Old收集器将作为CMS收集器出现Concurrent ModeFai原创 2017-04-12 11:13:59 · 293 阅读 · 0 评论 -
JDK监控和故障处理工具
前言 Sun公司声明这些jdk的命令行工具为:“没有技术支持并且是实验性质的”,但事实上,这些工具都非常稳定而且功能强大,能在处理应用程序性能问题、定位故障时发挥很大的作用。 一、jps:虚拟机进程状况工具 功能:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函转载 2017-04-12 14:03:55 · 620 阅读 · 0 评论 -
Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
JDK内置工具使用一、javah命令(C Header and Stub File Generator)二、jps命令(Java Virtual Machine Process Status Tool)三、jstack命令(Java Stack Trace)四、jstat命令(Java Virtual Machine Statistics Monitoring To转载 2017-04-12 17:37:55 · 658 阅读 · 0 评论 -
Java虚拟机类加载机制
虚拟机类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。Java语言里,类型的加载和连接过程是在程序运行期间完成的。 类的生命周期: 加载 loading 验证 verification 准备 preparation 解析 resolution转载 2017-04-18 09:16:12 · 316 阅读 · 0 评论 -
JVM调优:调优方法
JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里JProfiler:商业软件,需要付费。功能强大。详细说明参考这里VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。如何调优观察内存释放情况、集合类检查、对象树原创 2016-12-19 15:37:00 · 531 阅读 · 0 评论 -
JVM调优:新一代的垃圾回收算法
垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚 至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个相原创 2016-12-19 15:30:09 · 273 阅读 · 0 评论 -
对象访问
在java语言中,对象访问是如何进行的?对象访问在java语言中悟出不在,即使最简单的访问也会涉及到java栈,堆、方法区这三个重要的内存区域,Object obj = new Object();以这句话为例,我们分析一下对象是如何访问的。Object obi会反射到java栈的本地变量表中,而new Object();这部分会反射到java堆中,形成一块存储了Objec原创 2016-10-25 14:23:32 · 343 阅读 · 0 评论 -
运行时常量池溢出
常量池存在于方法区中,方法区:1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。根据以上两点,我们模拟方法区内存溢出可以一直往方法区中存储static变量。方法区内存配置参数:-XX:PermSize和-XX:MaxPermSize实例原创 2016-10-25 14:18:23 · 453 阅读 · 0 评论 -
java虚拟机的几个重要工作区域
1、程序计数器 程序计数器是java程序运行的行号标识器,字节码解释器通过改变程序计数器的值来选取下一条要执行的指令!分支、循环、跳转、异常、线程恢复等基础功能都需要依靠程序计数器来完成!java虚拟机的多线程是通过轮流切换并分配处理器执行时间的方式来实现的,在任何时刻一个处理器只能执行一条线程中的指令,因此为了线程切换之后能够恢复到正常的执行位置,每条线程都需要一个独立的程序计数器原创 2016-10-25 14:26:03 · 471 阅读 · 0 评论 -
java 类加载器
1、java虚拟机与程序的声明周期在如下几种情况下,java虚拟机将结束声明周期1)执行了System.exit()方法2)程序正常执行结束3)程序在执行过程中遇到了异常或错误而异常终止4)由于操作系统出现错误而导致java虚拟机进程终止2、类的加载、连接与初始化1)加载:查找并加载类的二进制数据2)连接:验证:确保被加载的类的正确性准备:为类的静态变量分配原创 2016-11-01 09:17:13 · 311 阅读 · 0 评论 -
redis windows安装详情及配置信息
Redis是一个Key-value数据库,使用内存存储,数据访问速度非常快,同时也支持数据持久化存储。1、启动服务配置redis-server redis.conf配置:更改redis的配置需要修改redis.conf文件,以下主要配置进行了注释#是否作为守护进程运行daemonize no#Redis 默认监听端口port 6379#客户端闲置多少秒后原创 2016-11-01 16:20:26 · 347 阅读 · 0 评论 -
JVM调优总结
http://www.360doc.com/content/12/0113/08/1073512_179088229.shtml1、堆大小设置JVM中最大堆大小有三方面限制:相关操作系统的数据模型限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64位操作系统对内存无限制。典型设置:java -Xmx3550m -Xms3550m转载 2016-12-15 17:30:19 · 257 阅读 · 0 评论 -
垃圾回收算法
Java虚拟机的内存区域中,程序计数器、虚拟机栈和本地方法栈三个区域是线程私有的,随线程生而生,随线程灭而灭;栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作,每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这三个区域的内存分配和回收都具有确定性。垃圾回收重点关注的是堆和方法区部分的内存。常用的垃圾回收算法有:(1).引用计数算法:给对象中添加一个引用计数器转载 2016-12-16 11:12:41 · 258 阅读 · 0 评论 -
JVM调优:第一章基本概念
数据库类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类型原创 2016-12-19 14:05:34 · 277 阅读 · 0 评论 -
JVM调优:基本垃圾回收算法
可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep) 此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶原创 2016-12-19 15:24:42 · 260 阅读 · 0 评论 -
JVM调优:经典配置举例二
常见配置汇总堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:原创 2016-12-19 15:27:59 · 384 阅读 · 0 评论 -
Java内存模型浅析
JVM在执行java程序时会将它所管理的内存划分成若干个不同的数据区域。如图所示:其中方法区和堆是所有线程共享的数据区,其他区域则是线程隔离的数据区。这些区域的功能各有不同:程序计数器:可以理解为当前线程所执行的字节码的行号知识器。字节码解释器工作时会通过改变这个计数器的值来选取下一条需要执行的字节码指令。分支,循环,判断,异常处理,线程回复等功能都依赖这个计数器。转载 2017-04-16 22:19:01 · 331 阅读 · 0 评论
分享