对jvm 的理解
来源:互联网 发布:什么编程语言好找工作 编辑:程序博客网 时间:2024/06/15 10:00
java内存模型
堆 解决数据存储的问题,数据怎么放,放在哪里
栈 解决程序的运行问题,即程序怎么执行,或者说如何处理数据的问题。java栈是一块线程私有的内存空间,存放对象的引用
方法区 就是存放类信息,常量信息,常量池信息,包括字符串字面量和数据常量等、是一块所有线程共享的内存空间
堆中的对象的存放地址是通过方法区中的类信息创建的。java堆是与java应用程序关系最密切的内存空间,几乎所有的java对象都存放在其中
java堆分为新生代和老年代,分代的目的就是优化GC性能,新生代分为三块区域:Eden(伊甸园),s0,s1区,一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次Minor GC后,如果仍然存活,将会被移到Survivor区。s0和s1是两块大小相等并且可以相互转换角色的空间,对象在Survivor区中每熬过一次Minor GC,年龄就会增加1岁,当它的年龄增加到一定程度时,就会被移动到年老代中。
在年轻代的垃圾回收算法使用的是复制算法,复制算法的基本思想就是将内存分为两块,每次只用其中一块,当这一块内存用完,就将还活着的对象复制到另外一块上面。复制算法不会产生内存碎片。
-XX:PermSize=128m -XX:MaxPermSize=320m永久代的最大大小 -Xmn2g新生代的大小
参考 新生代与老年代
-Xmn可以设置新生代的大小,设置一个比较大的新生代会减少老年代的大小,这个参数对系统的性能以及GC行为有很大影响,新生代的大小一般设置为整个堆内存的1/3到1/4,
-XX:SurvivorRatio设置新生代中Eden和from/to的空间比例;
实际工作中,应尽可能的将对象预留在新生代,减少老年代GC的次数,除了可以用-Xmn设置新生代的大小,还可以通过-XX:newRatio设置新生代和老年代的比例,比例=老年代/新生代
jmeter 聚合报告的参数意义
Samples:样本数Average:平均响应时间
Median:中位数,50%响应时间小于此值
90%line:90%响应时间小于此值
Min:最短响应时间
Max:最大响应时间
Error:未命中数/比率
Throughput:吞吐量——每秒完成请求事务数【可以理解成tps或者qps,一般100用户压15min左右,其值会在800左右——很多地方并没有严格去计较,就像tps和qps概念是不一样的,可是很多时候可以混为一谈】
Kb/sec:每秒接收数据量
Tomcat的优化
1) Tomcat启动命令行中的优化参数即JVM优化2 ) Tomcat容器自身参数的优化
Tomcat首先跑在JVM之上的,因为它的启动其实也只是一个java命令行,首先我们需要对这个JAVA的启动命令行进行调优。
Tomcat 的启动参数位于bin目录下,linux下的catalina.sh,和Windows下的catalina.bat。
- 对JVM的理解
- 对jvm 的理解
- 我对JVM的理解
- 对JVM的一些理解
- 谈谈你对JVM的理解
- 对jvm卸载class条件的理解
- 对JVM分派概念的理解
- 自己对JVM新生带的理解
- 谈谈你对JVM的理解?
- 言必称希腊--浅谈对JVM GC垃圾回收的理解
- 简单谈谈我对JVM内存管理的理解(1)
- 简单谈谈我对JVM内存管理的理解(2)
- #通过一道阿里笔试题加深对JVM的理解
- 理解高并发(6).jvm对内置锁的优化
- 对JVM虚拟机中方法区的理解
- JVM内存管理机制----对《深入理解JAVA虚拟机》第二章的理解(上)
- jvm的理解
- 自己的理解JVM
- Leetcode 83 Remove Duplicates from Sorted List
- mysql事务隔离级别 脏读,不可重复读,幻象读
- PathMeasure
- Struts2 模块包含
- Leetcode 136 Single Number
- 对jvm 的理解
- Servlet 工作原理解析
- Animation之基础篇_常用方法
- java wait()方法和notify()方法的使用
- Leetcode 169 Majority Element
- Centos环境下 helloworld rpm的制作,安装,卸载
- Leetcode 217 Contains Duplicate
- Logistic回归中梯度上升算法的数学原理
- Java 工具类