Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JVM Flags介绍-Heap相关

JVM Flags介绍-Heap相关

作者头像
LNAmp
发布于 2018-09-05 07:48:56
发布于 2018-09-05 07:48:56
1.6K0
举报

JVM flag类别

  • 标准flags,标准flags一般都是最基本的flags,而且在将来JVM的发布版本中基本不会改变的,例如-server -client
  • X flags,这类的特点是非标准,随着JVM版本不同可能会改变;这类flags都是以-X开头,通过java -X可以列出所有(少了-Xcomp)
  • XX flags,这类也是非标准的。Xflags很稳定,XXflags可能更加实验性(主要被JVM开发者用于debug和优化JVM实现)。在使用X flags或者XX flags之前一定要明白flag的使用方式和可能带来的副作用。XX flags都以-XX开头,但是语法根据flag type不同而不同

XXflags使用方式

  • 如果是boolean flag,使用+ -。例如<b>-XX:+<name></b> activate <b><name></b>,-号表明deactives that option.
  • 对于非boolean flag,使用-XX:<name>=<value>的方式

关于堆调整(Heap Tuning)的Flags

以下的讨论的heap是这样的heap(堆):基于经典分类,分为young gen, old gen , permanent gen 。1.8已经没有permanent gen,不在该讨论范围

-Xms and -Xmx(or: -XX:InitialHeapSize and -XX:MaxHeapSize)

-Xms和-Xms是目前最流行的JVM flags,用来指定初始heap大小和最大heap大小 一般用k表示kilo,m表示mega,g表示giga,例如 <pre>java -Xms128m -Xmx2g myapp</pre>表示myapp应用堆初始化大小为128m bytes,最大为2g bytes。 主要注意的是-Xms -Xmx相当于对应-XX的别名,当我们使用-XX:+PrintCommandLineFlags时,需要搜索InitialHeapSize和MaxHeapSize,而不是Xms和Xmx

-XX:+HeapDumpOnOutOfMemoryError ,-XX:HeapDumpPath=<path>

当我们系统发生OOM错误的时候,通过我们需要jmap heap dump,但是有可能虚拟机已经crash了的时候,我们最好设置-XX:+HeapDumpOnOutOfMemoryError,这样在发生OOM的时候回自动heap dump,由于通常heap dump文件都很大,所有最好是指定path

-XX:OnOutOfMemoryError

当我们需要在发生OOM的时候执行一些脚本或命令,我们可以通过该flag指定 <pre>$ java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:OnOutOfMemoryError ="sh ~/cleanup.sh" MyApp</pre>

-XX:PermSize and -XX:MaxPermSize

可以使用-XX:PermSize指定初始化Permanent大小,使用MaxPermSize指定最大大小

-XX:InitialCodeCacheSize and -XX:ReservedCodeCacheSize

一个经常被忽视的JVM内存区域是"code cache",用来存储方法编译后的native code。平常该区域不会存在性能问题,但是一旦发生问题都是灾难性的。当code cache区域用尽时,JVM会给出警告信息然后切换到"interpreted-only "模式,该模式下停止JIT编译器,字节码不能编译成native code,性能急速下降。可以通过设置-XX:InitialCodeCacheSize and -XX:ReservedCodeCacheSize来调整code cache区域大小

-XX:+UseCodeCacheFlushing

这个参数与code cache有关,当code cache持续增长时,发生overflow是迟早的事情,此时可以通过设置UseCodeCacheFlushing来避免最终切换到interpreted-only模式。从名字可以看出,用法就是当JVM code cache填满时会丢掉一些编译了的代码从而避免进入interpreted-only 模式。但是该种方法治标不治本,还是得找出根源修复内存泄露的问题。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.06.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
nginx优化 突破十万并发
文章转载于:http://9388751.blog.51cto.com/9378751/1676821
用户1214487
2018/07/31
3.2K0
nginx优化 突破十万并发
Installing sentry 9.0.0 with postgresql in Centos7
Sentry是一个开源错误跟踪工具,可帮助您实时监控和修复bug。支持 Python、OC、Java、Go、Node、Django、RoR 等主流编程语言和框架,还提供了 GitHub、Slack、Trello 等常见开发工具的集成。
阿dai学长
2019/04/03
1.3K0
Installing sentry 9.0.0 with postgresql in Centos7
重传问题四阶段优化分享
使用wrk模拟http压力打nginx时,发现压测过程中持续出现重传现象,而且在高压下和低压下都会出现不同程度的重传。
mingjie
2022/05/12
1.1K0
重传问题四阶段优化分享
Sentry9-1-2部署
Sentry 是一个开源的实时错误报告工具,支持 web 前后端、移动应用以及游戏,支持 Python、OC、Java、Go、Node.js、Django、RoR 等主流编程语言和框架 ,还提供了 GitHub、Slack、Trello 等常见开发工具的集成。
YP小站
2020/06/04
1.8K0
K8S OS 内核性能参数调优
[1] ES Configuration: https://www.elastic.co/guide/en/elasticsearch/reference/2.1/setup-configuration.html#vm-max-map-count [2] root cause kernel soft lockups · Issue #37853 · kubernetes/kubernetes (github.com): https://github.com/kubernetes/kubernetes/issues/37853 [3] service-node-port-range and ip_local_port_range collision · Issue #6342 · kubernetes/kops (github.com): https://github.com/kubernetes/kops/issues/6342 [4] Image: We should tweak our sysctls · Issue #261 · kubernetes-retired/kube-deploy (github.com): https://github.com/kubernetes-retired/kube-deploy/issues/261 [5] Upgrading docker 1.13 on nodes causes outbound container traffic to stop working · Issue #40182 · kubernetes/kubernetes (github.com): https://github.com/kubernetes/kubernetes/issues/40182 [6] arp_cache: neighbor table overflow! · Issue #4533 · kubernetes/kops (github.com): https://github.com/kubernetes/kops/issues/4533
东风微鸣
2022/04/22
2.1K0
推荐一款Python应用错误追踪神器!
Sentry 是一个开源的实时错误追踪系统,用于监视应用程序中的错误并提供详细的错误报告。它支持多种编程语言和框架,如 Python、JavaScript、Node.js、Django、Flask 等,帮助开发人员快速诊断和解决问题,以确保应用程序稳定运行。Sentry 的服务分为服务端和客户端 SDK 两部分,服务端可以直接使用其提供的在线服务,也可以本地自行搭建;客户端 SDK 则提供了对多种主流语言和框架的支持。
测试开发技术
2024/07/11
3810
推荐一款Python应用错误追踪神器!
为最佳性能调优 Nginx
通常来说,一个优化良好的 Linux 服务器可以达到 500,000 – 600,000 次/秒 的请求处理性能,然而我的 Nginx 服务器可以稳定地达到 904,000 次/秒 的处理性能,并且我以此高负载测试超过 12 小时,服务器工作稳定。 这里需要特别说明的是,本文中所有列出来的配置都是在我的测试环境验证的,而你需要根据你服务器的情况进行配置: 从 EPEL 源安装 Nginx: yum -y install nginx 备份配置文件,然后根据你的需要进行配置: cp /etc/nginx/ngi
用户1263954
2018/01/30
2.4K0
django开发个人简易Blog—nginx+uwsgin+django1.6+mysql 部署到CentOS6.5
前面说完了此项目的创建及数据模型设计的过程。如果未看过,可以到这里查看,并且项目源码已经放大到github上,可以去这里下载。 代码也已经部署到sina sea上,地址为http://fengzhen
古时的风筝
2018/01/08
1.2K0
django开发个人简易Blog—nginx+uwsgin+django1.6+mysql 部署到CentOS6.5
Airflow2.2.3 + Celery + MYSQL 8构建一个健壮的分布式调度集群
前面聊了Airflow基础架构🔗,以及又讲了如何在容器化内部署Airflow🔗,今天我们就再来看看如何通过Airflow和celery构建一个健壮的分布式调度集群。 1集群环境 同样是在Ubuntu 20.04.3 LTS机器上安装Airflow集群,这次我们准备三台同等配置服务器,进行测试,前篇文章🔗[1]中,我们已经在Bigdata1服务器上安装了airflow的所有组件,没看过的可以点击链接先看下之前的文章,现在只需要在其他两个节点安装worker组件即可。 Bigdata1(A) Bigdata2
公众号: 云原生生态圈
2022/02/16
2K0
Airflow2.2.3 + Celery + MYSQL 8构建一个健壮的分布式调度集群
从源码与实战分析TCP半连接队列溢出故障
hping3是一个基于C语言编写的网络性能测试工具,由Salvatore Sanfilippo开发。它能够模拟各种类型的网络包,对服务器进行压力测试,并提供丰富的选项来定制测试。hping3不仅适用于HTTP协议,还支持TCP、UDP、ICMP等多种协议,使其成为一个多功能的网络性能测试工具。
五分钟学SRE
2024/05/01
4500
Sentry 监控 - 私有 Docker Compose 部署与故障排除详解
除了公开提供其源代码外,Sentry 还提供并维护了一个最小的设置,可以为简单的用例开箱即用。该存储库还可以作为各种 Sentry 服务如何连接以进行完整设置的蓝图,这对于愿意维护更大安装的人很有用。为简单起见,我们为此选择使用 Docker 和 Docker Compose, 以及基于 bash 的安装和升级脚本。
为少
2021/12/15
3.3K0
Sentry 监控 - 私有 Docker Compose 部署与故障排除详解
Nakama Server,服务器配置
YAML 配置文件配置 Nakama 服务器运行方式的许多方面。您可以在不指定配置文件的情况下运行 Nakama(而是依赖默认设置)。
为少
2021/05/27
1.6K0
Nakama Server,服务器配置
案例篇:服务吞吐量下降很厉害,怎么分析?
在 Linux 系统中,常见的动态追踪方法包括 ftrace、perf、eBPF/BCC 以及 SystemTap 等。
早起的鸟儿有虫吃
2020/06/28
2.6K0
案例篇:服务吞吐量下降很厉害,怎么分析?
测试格式
因为系统已经装了 python3.6 所以接下来直接装虚拟环境 virtualvenv
py3study
2020/01/02
7380
Python网络框架——Web服务器
小编说:Web服务器是连接用户浏览器与Python服务器端程序的中间节点,在网站建立的过程中起着重要的作用。目前最主流的Web服务器包括Nginx、Apache、lighthttpd、IIS等。Python服务器端程序在Linux平台下使用最广泛的是Nginx。
博文视点Broadview
2020/06/12
2.1K0
Python网络框架——Web服务器
linux中TCP三次握手与四次挥手介绍及调优
TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如ip地址、端口号等。
没有故事的陈师傅
2021/08/13
8980
分布式任务系统gearman的python实战
Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。Gearman是一个分发任务的程序框架,可以用在各种场合,开源、多语言支持、灵活、快速、可嵌入、可扩展、无消息大小限制、可容错,与Hadoop相比,Gearman更偏向于任务分发功能。它的任务分布非常简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于图片resize需要消耗大量计算资 源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。
sunsky
2020/08/20
8800
Nginx工作原理和优化、漏洞。
http://blog.csdn.net/hguisu/article/details/8930668 (排名100多bolg写的很好)
bear_fish
2018/09/20
2.6K0
Nginx工作原理和优化、漏洞。
ARM 环境中部署 Dify
将下面内容保存为 arm-images.yaml,执行 docker compose -f arm-images.yaml pull 拉取所需镜像:
AlphaHinex
2024/11/25
1.8K1
ARM 环境中部署 Dify
『学习笔记』Nginx日志分析与性能调优
🎈今日推荐——https://cloud.tencent.com/developer/article/2472042
二一年冬末
2024/11/29
4620
推荐阅读
相关推荐
nginx优化 突破十万并发
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档