JVM内存模型和性能优化

Java 发表评论
http://www.jdon.com/idea/jvm.html  淘到了好文章,一定要抽时间仔细看看JVM内存模型优点内置基于内存的并发模型:      多线程机制同步锁Synchronization大量线程安全型库包支持基于内存的并发机制,粒度灵活控制,灵活度高于数据库锁。多核并行计算模型基于线程的异步模型。JVM性能的人为问题关键原因是:没有正确处理好对象的生命周期。需要从需求中找出存在自然边界的业务对象,将其对应落实到内…

Prometheus监控JVM

Java 发表评论
环境 系统:CentOS 7.5 软件:jmx_prometheus_javaagent-0.3.1.jar 客户端 下载jmx_exporter # mkdir -p /usr/local/prometheus/jmx_exporter # cd /usr/local/prometheus/jmx_exporter # wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar 添加配置文件 # vim /usr/local/prometheus/jmx_exporter/jmx_exporter.yml --- r…

JVM优化系列之一(-Xss调整Stack Space的大小)

Java 发表评论
http://blog.csdn.net/zhuyijian135757/article/details/38025339 Java程序中,每个线程都有自己的Stack Space(堆栈)。这个Stack Space不是来自Heap的分配。所以Stack Space的大小不会受到-Xmx和-Xms的影响,这2个JVM参数仅仅是影响Heap的大小。 Stack Space用来做方法的递归调用时压入Stack Frame(栈帧)。所以当递归调用太深的时候,就有可能耗尽Stack Space,爆出StackOverflow的错误。 -Xss128k:…

JVM组成部分以及内存模型

Java 发表评论
 一、JVM的组成部分 我们先把JVM这个虚拟机实现机制画出来,如下图所示: 从这个图中可以看到,JVM是运行在操作系统之上的,它与硬件没有直接的交互。我们再来看下JVM有哪些组 成部分,如下图所示: 1、 Class Loader 类加载器 类加载器的作用是加载类文件到内存,比如编写一个HelloWord.java程序,然后通过javac编译成class文件, 那怎么才能加载到内存中被执行呢?Class Loader承担的就是这个责任,…

当new一个对象时在JVM中会有哪些操作

Java 发表评论
目录 首先我们了解一下虚拟机(JVM)的内存分布 类加载机制 1、加载 2、连接  3、初始化 首先我们了解一下虚拟机(JVM)的内存分布      程序计数器(program count register):当前线程所执行的字节码的行号指示器(每个线程一个计数器,互不影响)      本地方法栈是jvm调用操作系统方法所使用的栈。      虚拟机栈是存储局部变量表、操作栈、动态链接、方法出口等信息      方法区存放了一些常量…

JVM堆大小的调整

Java 发表评论
Sun HotSpot 1.4.1使用分代收集器,它把堆分为三个主要的域:新域、旧域以及永久域。Jvm生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便获得使用期并进入旧域。在永久域中jvm则存储class和method对象。就配置而言,永久域是一个独立域并且不认为是堆的一部分。    可使用-Xms和-Xmx 控制整个堆的原始大小或最大值。 为控制新域的大小,可使用-XX:NewRatio设置新域在堆中…

几个重要的jvm参数配置及建议

Java 发表评论
jvm配置参数比较多,只有当经常使用时,才能在脑中不忘。而在现在的工作生活中,大家可能经常跟这些参数打交道的时间比较少,只有当线上的服务出问题,才会去熟悉这些参数。这些是自己工作中调试用到的几个重要的参数,留作以后翻看。 建议: 1:建议用64位操作系统,Linux下64位的jdk比32位jdk要慢一些,但是吃得内存更多,吞吐量更大。 2:XMX和XMS设置一样大,MaxPermSize和MinPermSize设置一样大…

JVM虚拟机有内存泄露怎么解决

Java 发表评论
l java内存管理机制  在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。 Java 语言对内存管理做了自己的优化,这就是垃圾回收机制。 Java 的几乎所有内存对象都是在堆内存上分配(基本数据类型除外),然后由 GC ( garbage  coll…

JVM微服务调用非JVM微服务

Java 发表评论
一 新建项目microservice-sidecar-client-ribbon,添加依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId>…

JVM调优总结(2):调优方法

调优设置 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置: java -Xmx3550m -Xms3550m -Xmn2g-Xss128k -Xmx3550m:设置JVM最大可用堆内存为3550M。-X…

Jvm线上调优实战(1)

Java 发表评论
侦探问题根源 通过top指令发现,当前5511的线程cup和内存的使用率过高: top : 5511 root 20 0 16.841g 6.088g 5584 S 47.0 39.2 4011:41 java 9550 root 20 0 2516200 67892 2436 S 0.7 0.4 204:20.40 java 21271 root 20 0 11.579g 0.987g 5056 S 0.7 6.4 46:29.88 java 13 root 20 0 0 0 0 S 0.3 0.0 0:35.21 ksoftirqd/1 2128 root 20 0 9.833g 1.273g 6656 S 0.3 8.2 33:48.35 java 29464 root…

tomcat添加jvm参数(eclipse的tomcat插件)

Java 发表评论
  tomcat添加jvm参数: 修改bin/catalina.sh,添加以下内容(定义了两个变量logpath和datapath) JAVA_OPTS="-Dlogpath =/opt/logs  -Ddatapath=/opt/data" 如果通过eclipse的tomcat插件启动tomcat,则上面方式不起作用,需要安装以下方式进行参数添加    

Linux下修改JVM内存大小

Java 发表评论
要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上,红色的为新添加的. # OS specific support. $var _must_ be set to either true or false.JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"cygwin=false

【Java面试整理之JVM】深入理解JVM结构、类加载机制、垃圾回收GC原理、JVM内存分配策略、JVM内存泄露和溢出

Java 发表评论
一、前言 最近要准备找工作,JVM肯定是跑不掉的面试内容,所以把JVM相关的内容拿来认真学习一遍,整理成自己能够快速消化的提纲,方便随时可以调用。主要分JVM结构、类加载机制、垃圾回收GC原理、JVM内存分配策略、JVM内存泄露和溢出 五个方面展开。 二、JVM结构 JVM的内部结构直接贴图: 各部分的主要功能: 类加载器 JVM启动,程序开始执行时,负责将class字节码加载到JVM内存区域中 执行引擎 负责…