
JVM
服务端开发
这个作者很懒,什么都没留下…
展开
-
JVM学习(一):JVM运行时数据区-堆、栈、方法区
概述JVM是Java应用程序的运行环境,每个Java应用程序,通过main方法作为执行入口启动后,在操作系统中都会对应一个JVM进程。Java应用程序在启动时,需要加载实际执行的类的类文件.class,从而获取类的字段,方法,常量等信息,在执行过程中,需要动态创建对象,在主线程或者子线程进行函数调用。而这就需要在运行时进行动态内存分配:对于类文件的内容在一块内存存放,从而可以通过指针的...原创 2019-03-24 12:07:38 · 3629 阅读 · 0 评论 -
JVM运行时数据区-堆
基本概念 堆,jvm进程启动时创建,为jvm进程的所有线程共享的区域,所有Java对象和数组(jdk8+也包含字符串常量)均在堆上分配内存,所以堆的大小决定了能存放多少Java对象,当堆满或者无法容纳新创建的对象时,则需要通过垃圾收集器进行垃圾回收,在回收过程中会造成应用停顿,影响应用性能。所以在JVM性能调优中,需要在堆的大小,应用需要创建的对象的多少和大小,可容忍应用停顿时间以及目标...原创 2018-11-09 17:14:44 · 2008 阅读 · 0 评论 -
JVM运行时数据区-方法区
基本概念 在hotspot jvm实现当中,在jdk8以前,方法区的实现为PermGen,即永久代,主要存放类的信息,方法的信息,常量池,静态变量,符号解析;而jdk8+,则去除了PermGen,使用元空间MetaSpace代替,元空间使用的是本地内存,理论上可以无限大,最大大小指受限于本地内存大小,所以不会在出现outOfMemoryError:PermGen的异常。同时在jdk8+...原创 2018-10-23 11:43:00 · 2071 阅读 · 0 评论 -
JVM类和对象体系设计
OOP-Klass对象系统:JVM内部的Java类实现JVM是基于C++实现的,故Java的每个类被JVM加载之后,需要使用一个C++的对等体来维护,同时Java对象实例也需要在C++中能够被访问,JVM的实现机制为OOP-Klass。OOP:普通对象指针,用来描述对象实例信息;Klass:Java类的C++对等体,用来描述Java类信息。对象实例在内存的组成包含对象头和实例数据两...原创 2019-03-11 15:20:00 · 2799 阅读 · 0 评论 -
Java对象的强、软、弱、虚引用
Java的方法的对象参数是按值传递的,而不是按引用传递的,即传递的是对象引用的值。对象引用通常是存放在栈中的,而对象引用所引用的对象是存放在堆中的。在Java中,为了优化内存使用,降低OOM发生的风险,提高垃圾回收的效率,可以在应用程序中根据对象的特点来设置不同类型的对象引用来协助JVM进行垃圾回收。对象引用包括以下类型:除了强引用之外,其他三种引用类型,在GC roots可达的情况下,也可以...原创 2019-03-24 16:15:53 · 2287 阅读 · 0 评论 -
JVM的类加载过程
一、 类文件加载创建类加载器,类加载器从类路径根据需要加载的类的全限定名找到类文件.class,加载类文件,读取类文件字节码流,然后根据类文件的标准格式解析类文件内容,如最开头是魔数,然后是主次版本号等,根据静态常量池创建动态常量池,常量池包含的内容如下:字符串常量,符号引用等,所有字符串常量,类名,接口名,方法名,字段名(符号信息)和其他字符信息。虚拟机指令是依赖符号引用,而不是直接引用...原创 2019-03-16 11:38:42 · 2778 阅读 · 0 评论 -
JVM GC垃圾回收算法与调优参数
概述在C++程序当中,对于每一个通过new动态创建的对象,在不再需要时,需要通过delete显示删除对象,释放该对象占用的内存空间,否则会发生内存泄露。在Java当中,为了简化内存管理,JVM提供了自动垃圾回收机制,统一由JVM来进行垃圾对象回收,在Java应用程序当中只需要按需创建对象即可,不需要在应用程序中手动删除对象。由之前的文章分析可知,在JVM的运行时数据区中,主要是在堆中存放新创...原创 2019-03-24 21:31:37 · 4884 阅读 · 0 评论 -
并行并发CMS垃圾回收器:-XX:+UseConcMarkSweepGC
概述CMS为基于标记清除算法实现的多线程老年代垃圾回收器。CMS为响应时间优先的垃圾回收器,适合于应用服务器,如网络游戏,电商等和电信领域的应用。为了实现这个目的,与其他垃圾回收器不同的是,CMS是与应用程序并发执行的,即在CMS对老年代进行垃圾回收时,应用程序大部分时间里是可以继续执行的,应用程序只需进行非常短暂的停顿。由于与应用程序并发执行,同一时刻同时存在垃圾回收线程和应用线程,故对服...原创 2019-03-24 21:34:38 · 38959 阅读 · 0 评论 -
GC日志配置与格式
GC日志配置与日志格式-XX:+PrintGC或者-verbose:gc:开启日志打印功能,即JVM会将运行期间的每次GC事件都以日志方式输出出来。配置之后打印如下:[GC 118250K->113543K(130112K), 0.0094143 secs][Full GC 121376K->10414K(130112K), 0.0650971 secs]GC表示为Mi...原创 2019-03-24 23:48:26 · 4696 阅读 · 0 评论