文档章节

jvm学习笔记

dyzhou
 dyzhou
发布于 2015/08/21 18:10
字数 1011
阅读 139
收藏 16

java堆相关参数:
        起始值:-Xms
        最大值:-Xmx
        新生代分配内存设置:-Xmn
        

        内存溢出快照设置:-XX:+HeapDumpOnOutOfMemoryError
    -XX:HeapDumpPath=${目录}
       -XX:+PrintGCDetails: 产生gc详细日志;
       -XX:SurvivorRatio=  :设置eden区和survivor的大小比例

        实例:-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
        说明:打印gc过程详细日志:设置堆最小内存20M,堆最大内存20M,设置新生代内存10M,打印gc详细日志,设置eden区和survivor区                              内存比例为8:1

        -XX:PretenureSizeThreshold:设置当对象大于该值时直接分配到老年代,防止在eden区发生大量的内存复制。
        
        -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions 打印出所有jvm启动参数

-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:设置年轻代大小
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:MaxPermSize=n:设置持久代大小
收集器设置
-XX:+UseSerialGC:设置串行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器
垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
并行收集器设置
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

JVM给了三种选择:串行收集器、并行收集器、并发收集器

class 加载七个阶段:

加载:1.通过类的全限定名获取定义此类的二进制流(类加载器实现);2.将字节流所代表的静态存储结构转化为方法区的运行时数据结构;3.生成java.lang.Class对象,作为方法区这个类的各种数据访问入口;

验证:连接的第一步,保证class文件字节流符合虚拟机要求;

准备:为类变量分配内存,设置类变量初始值,在方法区中进行分配;

解析:将常量池内的符号引用替换为直接引用,包括类或接口解析、方法解析、字段解析;

初始化:真正开始执行代码,clinit()方法执行,父类优先;clinit方法由编译器自动收集类中所有类变量的赋值和static{}块合并产生


类加载器:
    启动类加载器:bootstrap classloader,加载java_home\lib下jar包,根据名称加载,或加载-XBootclasspath参数所指定路径下jar包;
    扩展类加载器 :加载java_home\lib\ext下的类;
    应用程序类加载器(又叫做系统类加载器):负载加载用户类路径上所指定的类库

    双亲委派模型:如果一个类加载器收到了类加载请求,首先不会自己尝试加载这个类,而是把这个请求委派给父类加载器去完成,因此所有的请求都会被传递到顶层类加载器中;

JAVA对象内存结构
对象在内存中存储布局主要包含3个部分:
        对象头:包含2部分数据:1、对象自身运行时数据,如hashCode、GC分代年龄、锁状态标识、线程持有的锁等,长多为32bit(32位操作系统,未开启指针压缩)或64bit(64位操作系统);2、类元数据对象引用;
        实例数据
        对齐填充
    
java内存结构与GC


java执行引擎

java内存模型

© 著作权归作者所有

共有 人打赏支持
dyzhou
粉丝 6
博文 8
码字总数 3684
作品 0
合肥
私信 提问
111 多线程JUC包下代码分析

Java多线程系列目录(共43篇) AtomicLongFieldUpdater:通过反射+CAS实现对传入对象的指定long字段实现类似AtomicLong的操作 http://www.cnblogs.com/skywang12345/p/javathreadscategory.ht...

素雷
2017/10/31
0
0
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
08/08
0
0
全新互联网Java后端开发技术思维导图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/82714797 图文里的技术如何学习,有没有免费资料? 对Java的技术,架构技术...

JAVA高级架构v
09/15
0
0
阿里P8架构师总结的互联网Java架构系统化学习路线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/83181980 网络应用,最常见的研发语言是Java的和PHP。 后端服务,最常见的...

JAVA高级架构v
10/19
0
0
Android--面试中遇到的问题总结(三)

《Android 开发工程师面试指南 LearningNotes 》,作者是陶程,由梁观全贡献部分。大家可以去知乎关注这两位用心的少年。这份指南包含了大部分Android开发的基础、进阶知识,不仅可以帮助准备...

sealin
2017/02/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

soapui的安装使用

https://blog.csdn.net/weiqing723/article/details/78865734

暗中观察
8分钟前
0
0
ACID学习记录

ACID的C即一致性,打比方,多个线程并发执行转账业务:A转给B一块钱,无论成功与否(A+B)的总额是不会变的。事务执行前与执行后数据内在的逻辑始终是成立的。这里就是转账前与转账后两人存款的...

wmzsonic
22分钟前
0
0
手写tomcat+servlet

写程序一定要有思路,思路很重要! 一、我们分两步第一步先实现手写tomcat,第二部写servlet 所用技术: 1、soket通信 IO流 2、http请求与相应 3、解析xml 4、java反射技术 导入所需要的jar...

jason_kiss
45分钟前
1
0
Beetl模板的基础用法 【变量、循环、条件】---《Beetl视频课程》(2)

本期视频做了一个博客的首页列表; 内容简介:springboot 集成 beetlsql;使用for循环,使用if控制语句,使用虚拟属性,定义变量等等 一起学beetl目录:https://my.oschina.net/u/1590490?ta...

Gavin-King
51分钟前
1
0
各种视频监控上墙方案的比较

方案1、一使用 DVR 、NVR 直接显示上墙 不得不说,这种办法是成本最低廉的,但这里有不少限制: 无法实现分散点的集中上墙。譬如连锁经营的酒店,如果我在总部建立一个集中上墙的环境,这个就...

PeakFang-BOK
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部