Java - JVM及其调优
原文链接:https://blog.csdn.net/qq_27098537/article/details/124436788
一、什么是JVM
用于运行java代码,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。

二、JVM的位置

三、JVM的体系结构

堆(Heap)和非堆(Non-heap)
- 堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是Java虚拟机启动时创建的。
- 在jvm中堆之外的内存被称为非堆内存(Non-heap memory)
- 堆是java代码可及的内存,留给开发人员使用的。非堆是留给jvm自己用的。
四、JVM调优
-Xms 128M:设定最小堆的大小,当虚拟机启动后,会分配128M的堆内存。
-Xmx 512m:设定程序运行期间最大堆的内存大小,如果程序运行需要更多的内存,超过该值,会发生OOM。
-XX:PermSize=64M:JVM初始分配的非堆内存。
-XX:MaxPermSize=128M:JVM最大允许分配的非堆内存,按需分配。
-Xss:设定每个线程的堆栈大小。视程序而定,考虑一个线程需要占用多少内存,会有多少线程同时运行等。
以上参数设置单位默认为Byte,可在数字后加[k/K]表示千字节(KB),[m/M]表示兆字节(MB)
最小堆占满后,会进行GC,如果GC后还不能得到足够的内存(GC未必会收集到所有当前可用内存),分配新对象就会扩展堆,如果-Xmx设置的太小,扩展堆就会失败,就会OOM。
— 要养成终生学习的习惯 —
Java - JVM及其调优的更多相关文章
- Java架构师面试题——JVM性能调优
JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...
- 【JAVA进阶架构师指南】之五:JVM性能调优
前言 首先给大家说声对不起,最近属实太忙了,白天上班,晚上加班,回家还要收拾家里,基本每天做完所有事儿都是凌晨一两点了,没有精力再搞其他的了. 好了,进入正题,让我们来聊聊JVM篇最后一个章节 ...
- JAVA系列之JVM内存调优
一.前提 JVM性能调优牵扯到各方面的取舍与平衡,往往是牵一发而动全身,需要全盘考虑各方面的影响.在优化时候,切勿凭感觉或经验主义进行调整,而是需要通过系统运行的客观数据指标,不断找到最优解.同时,在 ...
- Java性能优化权威指南-读书笔记(二)-JVM性能调优-概述
概述:JVM性能调优没有一个非常固定的设置,比如堆大小设置多少,老年代设置多少.而是要根据实际的应用程序的系统需求,实际的活跃内存等确定.正文: JVM调优工作流程 整个调优过程是不断重复的一个迭代, ...
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat.hprof等小巧的工具,本博客希望 ...
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解(转VIII)
JVM本身就是一个java进程,一个java程序运行在一个jvm进程中.多个java程序同时运行就会有多个jvm进程.一个jvm进程有多个线程至少有一个gc线程和一个用户线程. JDK本身提供了很多方 ...
- JVM参数调优
JVM参数调优 JVM参数调优是一个很头痛的问题,可能和应用有关系,下面是本人一些调优的实践经验,希望对读者能有帮助,环境LinuxAS4,resin2.1.17,JDK6.0,2CPU,4G内存,d ...
- JVM性能调优
摘自:http://uule.iteye.com/blog/2114697 JVM垃圾回收与性能调优总结 JVM调优的几种策略 一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将 ...
- JVM 性能调优实战之:一次系统性能瓶颈的寻找过程
玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈.性能优化分为好几个层次,比如系统层次.算法层次.代码层次…JVM 的性能优化被认为是底层优化,门槛较高, ...
- JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码
本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍) ...
随机推荐
- 如何调整Gitlab-Runner最大并发数?
概述: 我们在使用gitlab-runner做cicd时,如果安装之后没有配置gitlab-runner的最大并发数,在使用时候可能会碰到job的警告(job日志超过字节限制):job's log e ...
- 永久告别mac屏幕涂层脱落
转载:https://www.feng.com/post/11380203 我从2011年开始使用Mac book pro电脑,到现在的2016款已经是第三台了,我从来都不会被涂层脱落这个问题困扰,我 ...
- Qt音视频开发10-ffmpeg控制播放
一.前言 很多人在用ffmpeg做视频流解码的时候,都会遇到一个问题,如何暂停,如果打开的是本地视频文件,暂停你只需要停止解码即可,但是视频流你会发现根本没用,一旦你停止了解码,下次重新解码的时候,居 ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v8.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持 UDP .TCP .WebSocket 三种协议,支持 iOS ...
- 决策单调性优化 DP
前言 本文将介绍决策单调性优化 DP 的相关内容.持续更新修正,如有差错请指出. 1.四边形不等式优化 DP 1.1 四边形不等式与决策单调性 四边形不等式:如果对于任意的 \(a \le b \le ...
- .NET 依赖注入中的 Captive Dependency
大家好,上一篇我们分析了 .NET 依赖注入的默认行为,其实呢还没完全讲完.今天我先给大家出一道题: public interface IDbContext { } public class SqlS ...
- 搭建springboot web系统
一.集成spring-data-jpa 我在实际项目中使用mybaties居多,但是个人喜欢spring-data-jpa,在 1. 添加依赖 <!-- 数据源依赖 --> <dep ...
- SpringCloud(一) - Dubbo + Zookeeper
Dubbo 和Zookeeper 不是SpringCloud的东西,放在这里只是为了方便复习: 1.下载安装Zookeeper和Dubbo 1.1 下载安装教程 下载安装教程 windows环境下安装 ...
- Kubernetes kubeadm部署k8s集群
kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集 ...
- 深入理解第一范式(1NF):数据库设计中的基础与实践
title: 深入理解第一范式(1NF):数据库设计中的基础与实践 date: 2025/1/15 updated: 2025/1/15 author: cmdragon excerpt: 在关系型数 ...