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

java虚拟机jvm_java虚拟机jvm - zhuyuansj的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. java痴和堆_JAVA虚拟机理解 - 爱笑的痴迷者的个人空间 - OSCHINA - 中文开源技术交流社区...

    JVM定义: JVM(Java Virtual Machine),是一种运行Java程序的软件实现,是虚拟的机器.Java程序与平台无关,它直接在虚拟机中运行. JVM运行过程: JVM将内存分划如下 ...

  2. java -p_javap命令详解 - JackieYeah的个人空间 - OSCHINA - 中文开源技术交流社区

    一.用法 javap [ 选项 ] classes 二.描述 javap命令反汇编一个或多个类文件.它的输出由使用的选项决定.如果没有使用选项,javap命令将打印输出传递给它的类的包, protec ...

  3. java中的v递归的思想,Java中的递归思想 - osc_9lqilnv7的个人空间 - OSCHINA - 中文开源技术交流社区...

    递归: 递归的概念:方法自身调用自身则称为递归. 递归的分类: 间接递归:方法A调用方法B,方法B调用方法C,方法C调用方法A. 直接递归: 方法A调用方法A.(常用) 递归的注意事项: 递归一定要出 ...

  4. java hashmap 去重_HashMap去重 - osc_sj1kgo4z的个人空间 - OSCHINA - 中文开源技术交流社区...

    package util; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import ...

  5. java空格转义_java转义字符 - simpower的个人空间 - OSCHINA - 中文开源技术交流社区...

    1. 注意regex的写法 String   newName=name.replaceFirst("d:\\\\racke\\\\","http://192.168.0. ...

  6. java桌球教程视频,Java桌球小游戏1 - osc_wov79fj7的个人空间 - OSCHINA - 中文开源技术交流社区...

    版本三.使小球动起来 package cn.xjion.game; /** * 水平滚动 * @author xjion * */ import java.awt.*; import javax.sw ...

  7. java kml_当Java遇上KML - sheva.wen的个人空间 - OSCHINA - 中文开源技术交流社区

    最近有个需求,java读取kml,想到的方案大概有两个.一.按一般xml解析,二.用GIS相关的java库解析.由于KML格式具有一定的复杂性,懒人放弃按xml解析,转而考虑用java的GIS库,首先 ...

  8. java kcp,重新认识KCP - osc_rreaoxa0的个人空间 - OSCHINA - 中文开源技术交流社区

    什么是KCP KCP是一种网络传输协议(A Fast and Reliable ARQ Protocol),可以视它为TCP的代替品,但是它运行于用户空间,它不管底层的发送与接收,只是个纯算法实现可靠 ...

  9. 永真命题java怎么表达,147.命题逻辑 - osc_pll3h24t的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.语句 1.1命题 一个或真或假,而不能两者都是的陈述句. 说明: 1)命题是陈述句,而不能是疑问句.命令句.感叹句等: 例如(1)把门关上! (2)你到哪里去? 2)如果命题为真,我们就说它的真值 ...

最新文章

  1. Android ImageView的ScaleType属性
  2. RocketMQ--生产者与消费者的简单示例
  3. iframe 父窗口和子窗口相互的调用方法集锦
  4. Py之pandas:对dataframe型数据排序相关的问题总结之按照多个字段的多个条件进行排序(先打乱再排序)
  5. 什么是透明传输 点对多传输? 它们有哪些经典应用和优势特点
  6. 111 进程的创建和结束
  7. IT软件开发人员必去的10个社区
  8. 一台变两台,电脑也分身
  9. c语言第七章函数实验总结,C语言学习与总结---第七章:函数 [01]
  10. [转载]什么是ESD,什么是latch up
  11. python numpy 矩阵乘法以及列向量与行向量乘法
  12. 基于51单片机的万年历proteus仿真原理图方案设计
  13. 2022 GopherChina大会紧急通知!
  14. 前端企业级的开源项目
  15. google-glog功能介绍
  16. 工作中你应该知道的常识(深度好文)
  17. HTML生成word文档
  18. 第一章:pycharm、anaconda、opencv、pytorch、tensorflow、paddlex等环境配置大全总结【图像处理py版本】
  19. ISV是Independent Software Vendors 的英文缩写,意为“独立软件开发商”
  20. C语言malloc()和free()函数

热门文章

  1. ZOJ Problem Set - 1009
  2. java抛出异常thorw和throws的用法
  3. php json_encode 中文乱码解决方法
  4. java读取.properties文件及解决中文乱码问题
  5. 【干货】史上最全个性化推荐技术资料包(附50余份技术文档下载链接)
  6. 腾讯信息流推荐业务实践:内容分发场景的多目标架构实践
  7. 如何控制Facebook投放广告成本,提高利润?
  8. php结束外部程序,PHP执行外部程序的方法
  9. 苹果手机收不到推送信息_[赞助信息]拜仁签约新赞助商 球员将被禁用苹果手机...
  10. 吴恩达机器学习作业5——偏差与方差