Java之JVM知识点整理

Wesley13
• 阅读 344

昨天的排版并不是很满意,而且每天公众号只能发布一篇文章,近期资料看了很多,需要复习巩固一下,在群里,私聊小伙伴问了很多问题,今天都得到了解决。

[昨天好奇哈,就像试试countdownLatch容量改为Integer.MaxValue会不会崩。结果了,并不会,只是最大值为2147483647换算为秒大概66年,估计服务器会睡着]

JVM:Java Virtual Machine

什么是JMM?java memory model  java内存模型

Java之JVM知识点整理

一提到JVM就不得不提JVM调优,GC垃圾回收

(一)GC垃圾回收

什么是垃圾?

垃圾:已经不再被内存使用到的空间

2.如何确定垃圾?

引用计数法,可达性分析算法

3.GC算法?

引用计数法/ 可达性分析算法

复制算法:新生区,浪费空间

标记清除:老年区,内存碎片

标记压缩:老年区,移动对象

Java之JVM知识点整理

(二)JVM的系统参数

标配参数

X参数

XX参数:Boolean类型+-表示是否开启,KV型

JVM 系统默认值

Xms Xmx  做好调成一致  避免GC频繁收集  忽高忽低

-XX:+PrintGCDetails:开启打印GC细节

-XX:+UseSerialGC:开启串行收集

-XX:+PrintDFlagsInitial

jinfo  -flag ***  pid

-XX:MetaspaceSize:元空间大小

-Xss:单个线程大小跟随系统

Docs.oracle.com

Java之JVM知识点整理

4.强引用,软引用,弱引用,虚引用

(三)OOM :java.lang.outofmemoryError

Java之JVM知识点整理

java.lang.StackOverflowError

java.lang.outofmemoryError :java heap space

java.lang.outofmemoryError :GC overhead limit exceeded

java.lang.outofmemoryError :Direct buffer memory

java.lang.outofmemoryError:unable to create new native thread

java.lang.outofmemoryError Metaspace

demo:

package com.kk;/** * @author zhaokk * @create 2019-05-21-21:56 */

public class StackOverFlowDemo {

public static void main(String[] args) {                        stackOverFlow(); }

private static void stackOverFlow() {

stackOverFlow();    }

}

Exception in thread "main" java.lang.StackOverflowError at com.kk.StackOverFlowDemo.stackOverFlow(StackOverFlowDemo.java:14)  at com.kk.StackOverFlowDemo.stackOverFlow(StackOverFlowDemo.java:14)  at com.kk.StackOverFlowDemo.stackOverFlow(StackOverFlowDemo.java:14)  at com.kk.StackOverFlowDemo.stackOverFlow(StackOverFlowDemo.java:14)  at com.kk.StackOverFlowDemo.stackOverFlow(StackOverFlowDemo.java:14)  at com.kk.StackOverFlowDemo.stackOverFlow(StackOverFlowDemo.java:14)

递归层次太深

垃圾回收器:

并发 串行   并发标记  G1  java12(ZGC)

Java之JVM知识点整理

1、多数的Java应用不需要在服务器上进行GC优化;

2、多数导致GC问题的Java应用,都不是因为我们参数设置错误,而是代码问题;

3、在应用上线之前,先考虑将机器的JVM参数设置到最优(最适合);

4、减少创建对象的数量;

5、减少使用全局变量和大对象;

6、GC优化是到最后不得已才采用的手段;

7、在实际使用中,分析GC情况优化代码比优化GC参数要多得多

https://www.cnblogs.com/csniper/p/5592593.html

Java之JVM知识点整理

在不止一次问了如何配置之后终于自己操作后解决

---maven package

内部通过vm option配置

外部命令  java -server XX:+printGCDetail  -jar packagename

Java之JVM知识点整理

本文分享自微信公众号 - 赵KK日常技术记录(gh_cc4c9f1a9521)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
java基础知识随身记
2018年11月12日20:51:35一、基础知识:1、JVM、JRE和JDK的区别:JVM(JavaVirtualMachine):java虚拟机,用于保证java的跨平台的特性。  java语言是跨平台,jvm不是跨平台的。JRE(JavaRuntimeEnvironment):java的运行环境,包括jvmjava的核心类
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Stella981 Stella981
2年前
JVM的基础知识点Java的内存模型
阅读文本大概需要3分钟。Java虚拟机是Java工程师必学的进阶功课,这段时间开始死磕JVM。今天梳理一下JVM的基础知识点Java的内存模型!!(https://oscimg.oschina.net/oscnet/d48bb92f83f6e209089d8c03dc2ba35cf45.png)程序计数器是什么:程序计数器是
京东云开发者 京东云开发者
6个月前
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了