JVM
文章平均质量分 90
抽离的心
其实我们大家的努力程度还远远没有到拼智商的程度(⊙o⊙)
展开
-
JVM 垃圾回收算法及回收器详解
原文地址:http://www.importnew.com/26383.html1.GC Roots GC Roots就是一组必须活跃的引用。Java如果一个对象和GC Roots之间没有链接,那么这个对象也可以被视作是一个可回收的对象,即垃圾对象。Java中可以被作为GC Roots中的对象有: 1.虚拟机栈中引用的对象; 2.方法区中类静态属性实体引用的...转载 2018-05-17 19:00:37 · 165 阅读 · 0 评论 -
浅谈JVM调优
1.数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte、short、int、long、char、float、double、boolean;引用类型包括:类类型、接口类型...转载 2019-03-23 11:57:26 · 315 阅读 · 0 评论 -
Tomcat与JVM的优化
Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你。对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU 的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU 的处理能力越强,系统运行速度越快。Tomcat 的优化不像其它软件那样,简简单单的修改几个参数就可以了,它的优化主要有三方面,分为系...转载 2018-07-15 21:50:49 · 666 阅读 · 0 评论 -
一个 Linux上分析死锁的简单方法
1.简介 死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程(线程)在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产...转载 2018-07-15 11:20:16 · 1382 阅读 · 0 评论 -
浅谈String.intern()方法
1.String类型“==”比较样例代码如下:package com.luna.test;public class StringTest { public static void main(String[] args) { String str1 = "abc"; String str2 = "abc"; String str3 = "a"; ...原创 2018-07-14 22:43:33 · 53715 阅读 · 20 评论 -
Java方法区、永久代、元空间、常量池详解
1.JVM内存模型简介堆——堆是所有线程共享的,主要用来存储对象。其中,堆可分为:年轻代和老年代两块区域。使用NewRatio参数来设定比例。对于年轻代,一个Eden区和两个Suvivor区,使用参数SuvivorRatio来设定大小; Java虚拟机栈/本地方法栈——线程私有的,主要存放局部变量表,操作数栈,动态链接和方法出口等; 程序计数器——同样是线程私有的,记录当前线程的行号...原创 2018-07-14 18:55:20 · 37506 阅读 · 36 评论 -
Java中常用的四中引用
1.强引用(StrongReference) 强引用就是指在程序代码之中普遍存在的,比如下面这段代码中的object和str都是强引用:Object object = new Object();String str = "hello"; 只要某个对象有强引用与之关联,JVM必定不会回收这个对象,即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象...转载 2018-05-23 13:50:59 · 532 阅读 · 0 评论 -
Java高内存占用问题排查
1.搞Java开发的,经常会碰到下面两种异常: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space 要详细解释这两种异常,需要简单重提下Java内存模型。Java内存模型是描述Java程序中各变量(实例域、静态...转载 2018-05-21 09:09:55 · 27575 阅读 · 1 评论 -
Java高CPU占用问题排查
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。 根据top命令查询出导致CPU满运行的进程,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题。...转载 2018-05-21 08:55:53 · 203 阅读 · 0 评论 -
Java8性能监控与调优
前言生产环境发生了内存溢出该如何处理?生产环境应该给服务器分配多少内存合适?如何对垃圾收集器的性能进行调优?生产环境CPU负载飙高如何处理?生产环境应该给应用分配多少线程合适?不添加log的情况下,如何确定请求是否执行了某一行代码?不添加log的情况下,如何实时的查看某个方法的入参与返回值?JVM的字节码是什么东西?循环体中做字符串+拼接为什么效率低?字符串+拼接一定就是St...原创 2019-07-07 11:00:21 · 1227 阅读 · 0 评论