前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java之JVM知识点整理

Java之JVM知识点整理

作者头像
疯狂的KK
发布2019-08-16 15:14:49
5740
发布2019-08-16 15:14:49
举报
文章被收录于专栏:Java项目实战Java项目实战

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

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

JVM:Java Virtual Machine

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

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

(一)GC垃圾回收

什么是垃圾?

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

2.如何确定垃圾?

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

3.GC算法?

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

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

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

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

(二)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

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

(三)OOM :java.lang.outofmemoryError

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)

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

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

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

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

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

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

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

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

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

---maven package

内部通过vm option配置

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 赵KK日常技术记录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档