java虚拟机jvm

Java内存结构和java内存模型的区别。往往很多人会搞起来。这里主要对这2种进行解释并进行操作。经实践会JVM调优和不会JVM调优差别确实很大,足足可以提升服务器一倍的性能。

java内存结构:所谓的堆,栈,方法区和本地方法栈

java内存模型:

image.png

image.png

image.png

image.png

image.png

image.png

这个堆栈分配在idea中设置的地方

image.png

新生代设置比较小的话,垃圾回收会频繁去回收,否则内存不够用,频繁回收又影响性能,不回收又会导致内存溢出,所以这个配比很关键

一般设置虚拟机内存大小都是为当前PC的内存大小,新生代和老年代的内存比例是1:2,一般老年代都会多点,因为这样可以减少垃圾回收的次数,提高性能。初始堆内存和最大堆内存设置一样。


内存溢出,有栈溢出和堆溢出,栈溢出就像下面的死循环,这个在栈当中申明的int最大只能到一定的数字

image.png

image.png

总结:jvm参数调优,主要设置堆内存,主要让gc不要去频繁去回收垃圾,减少对老年代的回收。

image.png

这里题外介绍个知识点:什么叫守护线程

gc线程就是守护线程:主线程挂了,gc线程也挂了
非守护线程就是主线程挂了,但是new Thread依然在执行。
如果要把非守护线程变成守护线程,需要使用join,例:new Thread().setDeamon();

image.png

接下来介绍几个垃圾回收机制的算法

1.引用计算法

image.png

2.标记清除算法

image.png

3.复制算法。缺点是可用内存是原来内存的一半

image.png

4.标记压缩算法

image.png

5.GC分代算法

就是根据新生代和老年代进行垃圾回收,一般新生代回收的较多,老年代回收的较少,所以应该要避免老年代的gc回收,老年代回收比较慢
垃圾回收时的停顿现象
每次gc回收的时候,其他所有线程都会停顿,如果不停顿的话,那又有可能使用对象,或者新增对象,不便于垃圾清理。


垃圾收集器:
串行回收---单线程(单核回收)
并行回收---多线程(多核回收)  企业用的比较多,性能好CMS回收---并行GC,用标记清除算法进行回收,性能是最好的,一般用并行回收就可以了
G1回收,是在jdk1.7提出来的,用的比较少

测试接口吞吐量

启动jmeter测试工具,压力测试工具,主要测试网站的吞吐量,就是每秒能被访问多少次

image.png

image.png

image.png

image.png

image.png

image.png

原文发布于微信公众号 - 编程软文(zhuyuansj)

原文发表时间:2018-03-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

JVM内存回收机制及回收器-一目了然

一、概述 内存回收,分析出所以然,为什么如此设计,内存回收,如整理屋子。用户就是系统,其实和普通的系统没有大区别。 需求: 正确 高效(不能对用户线程有较大的影...

26312
来自专栏IT杂记

JVM垃圾收集

目录 内存区域回顾 机制介绍 收集器介绍 调优 内存区域回顾 ? 垃圾回收机制 Java 对象生命周期 ? 根搜索算法 ? ? 从GC Roots对象为起点,...

1936
来自专栏xingoo, 一个梦想做发明家的程序员

Java堆外内存之突破JVM枷锁

对于有Java开发经验的朋友都知道,Java中不需要手动的申请和释放内存,JVM会自动进行垃圾回收;而使用的内存是由JVM控制的。 那么,什么时机会进行垃圾...

2179
来自专栏Zephery

java分代回收

一、新生代内存的回收(minor GC)主要采用复制算法,下图展示了minor GC的执行过程。 ? 二、对于新生代和旧生代,JVM可使用很多种垃圾回收器进行垃...

34311
来自专栏java一日一条

不同的垃圾回收器的比较

现在已经是2014年了,但是对大多数开发人员而言有两件事情仍然是个谜——垃圾回收以及异性(码农又被嘲笑了)。由于我对后者也不是特别了解,我想我还是试着说说前者吧...

421
来自专栏java一日一条

JVM 优化经验总结

Java 虚拟机有自己完善的硬件架构, 如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成...

481
来自专栏小灰灰

jvm调优的工具介绍

jvm调优实战笔记之基础知识简介 I. 背景 java后端,提供了一个svg渲染的服务,在qps较大时,会出现频繁的gc,而此时的服务器性能本身并没有达到瓶颈...

3247
来自专栏纯洁的微笑

jvm系列(三):GC算法 垃圾收集器

概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 ...

2546
来自专栏java 成神之路

JVM(HotSpot) 垃圾收集器

33914
来自专栏java一日一条

JVM总体概括一:让我们知道在什么样的平台上舞蹈

比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问...

652

扫码关注云+社区