![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
----2.1.3.JVM
文章平均质量分 70
leoIsCoding
Github : [ https://github.com/leoChaoGlut ]
Email : [ leoIsCoding@163.com ]
展开
-
JVM分代垃圾回收策略的基础概念
JVM分代垃圾回收策略的基础概念JVM分代垃圾回收策略的基础概念由于不同对象的生命周期不一样,因此在JVM的垃圾回收策略中有分代这一策略。本文介绍了分代策略的目标,如何分代,以及垃圾回收的触发因素。文章总结了JVM垃圾回收策略为什么要分代,如何分代,以及垃圾回收的触发因素。为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因转载 2015-09-13 09:53:07 · 1522 阅读 · 0 评论 -
JVM内存分区
jvm体系结构jvm内存分区1 程序计数器程序计数器是当前线程所执行字节码的行号指示器,所以它是私有的。如果线程执行的是非native方法,则程序计数器中保存的是当前需要执行的指令的地址;如果线程执行的是native方法,则程序计数器中的值是undefined。程序计数器是不会发生内存溢出现象(OutOfMemory)的。 2 J转载 2015-10-22 21:53:42 · 1352 阅读 · 0 评论 -
JConsole监控Linux上的Tomcat
从Java 5开始 引入了 JConsole,来监控 Java 应用程序性能和跟踪 Java 中的代码。jconsole是JDK自带监控工具,只需要找到 JDK 安装路径,打开 bin 文件夹,双击 jconsole即可。0、监控前的准备将代码写入tomcat/bin/catalina.sh CATALINA_OPTS=-Djava.awt.headless=true JAVA_转载 2016-04-22 16:43:35 · 3305 阅读 · 1 评论 -
2016年书单
1.JavaEE开发的颠覆者: Spring Boot实战2.微服务架构与实践3.分布式服务框架原理与实践原创 2016-07-08 12:27:16 · 1034 阅读 · 0 评论 -
JDK 自带调试工具以及用法
无意中发现这个网站,有一些常用的JDK自带的调试工具以及比较详细的manual.查了一下,应该是一个国外的学校 "lafayette" 共享的资料.http://www.cs.lafayette.edu/docs/java/tooldocs/share/原创 2016-09-27 08:52:25 · 2575 阅读 · 0 评论 -
The JVM Architecture Explained
Learn more about the advantages of moving from a monolithic to microservices architecture. Brought to you in partnership with IBM.Every Java developer knows that bytecode will be executed by转载 2016-12-18 12:51:03 · 441 阅读 · 0 评论 -
深入理解 Java G1 垃圾收集器
本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践。一,什么是垃圾回收首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么?简单的说垃圾回收就是回收内存中不再使用的对象。垃圾回收的基本步骤回收的步骤有2步:查找内存中不再使用的对象释放这些对象占用的内存1,查找内存中不再使用的对转载 2016-12-25 09:59:11 · 2983 阅读 · 0 评论 -
Intellj Idea 远程调试
对于分布式系统的调试不知道大家有什么好的方法。对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时。今天咱们来了解了解Java远程调试这个牛逼的功能,本文以Intellij IDEA为例讲解怎么使用远程调试。以Thrift入门教程这篇文章中使用的程序作为例子。这个程序由Thrift服务端和客户端组成。描述一下远程调试需要解决的问题:服务转载 2017-01-04 22:16:25 · 2811 阅读 · 0 评论 -
JVM内存状况查看方法和分析工具
jinfo:可以输出并修改运行时的java 进程的opts。 jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。转载 2017-02-11 10:18:10 · 2835 阅读 · 0 评论 -
java问题排查工具单
问题排查工具箱前言平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在此书写下来,一是作为笔记,可以让自己后续忘记了可快速翻阅,二是分享,希望看到此文的同学们可以拿出自己日常觉得帮助很大的工具,大家一起进步。闲话不多说,开搞。Linux命令类tail最常用的tail -ftail -300f shopbase转载 2017-02-14 12:51:35 · 2499 阅读 · 0 评论 -
从 JVM 内存模型谈线程安全
作为一个三个多月没有去工作的独立开发者而言,今天去小米面试了一把.怎么说呢,无论你水平如何,请确保在面试之前要做准备,就像其中一位面试官说的一样,我知道你水平不错,但是无论如何也是要准备下的,不然你怎么会连这个方法也忘记了?此刻,我突然觉得我是一个假程序员.为什么这么说呢,作为一个从12年就开始写代码的程序员来说,忘记某个方法太可耻了.等赶明写一篇文章就叫做”我是个假程序员”来谈谈这些有趣转载 2017-03-05 12:43:23 · 1648 阅读 · 0 评论 -
Java GC之常见垃圾收集器参数总结
上一篇文章简单写了几种常见的垃圾收集器,俗话说,好记性不如烂笔头,今天总结一下这些垃圾收集器的参数总结,供自己和需要的读者将来查阅-XX:+UseSerialGC : Jvm运行在Client模式下的默认值,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收-XX:+UseParNewGC : 打开此开关后,使用ParNew + Serial Old的转载 2017-03-06 09:34:01 · 965 阅读 · 0 评论 -
java内存泄漏的定位与分析
1、为什么会发生内存泄漏Java如何检测内在泄漏呢?我们需要一些工具进行检测,并发现内存泄漏问题,不然很容易发生down机问题。编写java程序最为方便的地方就是我们不需要管理内存的分配和释放,一切由jvm来进行处理,当java对象不再被应用时,等到堆内存不够用时,jvm会进行垃圾回收,清除这些对象占用的堆内存空间,如果对象一直被应用,jvm无法对其进行回收,创建新的对象时,无法从转载 2017-03-27 22:14:15 · 30156 阅读 · 0 评论 -
在 Docker 里跑 Java ,趟坑总结
背景:众所周知,当我们执行没有任何调优参数(如“ java-jar mypplication-fat.jar ”)的 Java 应用程序时, JVM 会自动调整几个参数,以便在执行环境中具有最佳性能。但是许多开发者发现,如果让 JVM ergonomics (即 JVM 人体工程学,用于自动选择和行为调整)对垃圾收集器、堆大小和运行编译器使用默认设置值,运行在 Linux 容器( dock转载 2017-04-08 21:19:19 · 6161 阅读 · 0 评论 -
Java 8并发工具包漫游指南
Java 8并发工具包由3个包组成,分别是java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.locks,提供了大量关于并发的接口、类、原子操作类、锁相关类。借助java.util.concurrent包,可以非常轻松地实现复杂的并发操作。java.util.concurrent包主要包含以下内容,后文将具体介转载 2017-04-18 00:00:43 · 560 阅读 · 0 评论 -
我的Java后端书架 (2016年暮春3.0版)
书架主要针对Java后端开发。3.0版把一些后来买的、看的书添补进来,又或删掉或降级一些后来没有再翻开过的书。更偏爱那些能用简短流畅的话,把少壮不努力的程序员所需的基础补回来的薄书,而有些教课书可能很著名,但干涩枯燥,喋喋不休的把你带回到大学课堂上昏昏欲睡,不录。 1. 操作系统与网络的书《Linux内核设计与实现 第3版》Robert Love用最薄的篇幅转载 2016-07-10 10:55:33 · 1626 阅读 · 0 评论 -
Java并发编程:volatile关键字解析(推荐!)
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们转载 2016-07-06 17:49:12 · 1192 阅读 · 0 评论 -
JVM内存管理深入垃圾收集器与内存分配策略
JVM内存管理深入垃圾收集器与内存分配策略 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项技术当做Java语言的伴生产物。事实上GC的历史远远比Java来得久远,在1960年诞生于MIT的Lisp是第一门真正使用内存动转载 2015-09-13 09:55:23 · 1353 阅读 · 0 评论 -
Java:强引用、弱引用、软引用、虚引用
1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:?1Object o=new Object(); // 强引用当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程转载 2016-01-01 17:29:28 · 1403 阅读 · 0 评论 -
Java类的生命周期详解
引言最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大多只是告诉你“怎样做”,但至于“为什么这样做”却不多说,所以造成大家在基础和原理方面的知识比较匮乏,所以笔者今天就斗胆来讲一下这个问题,权当抛砖引玉,希望对在这个问题上有疑惑的朋友有所帮助,文中有说的不转载 2015-12-31 17:01:51 · 1408 阅读 · 0 评论 -
线程池线程数与(CPU密集型任务和I/O密集型任务)的关系
近期看了一些JVM和并发编程的知识,来做一个关于(线程池线程数与(CPU密集型任务和I/O密集型任务)的关系)的总结:1.任务类型举例:1.1: CPU密集型:例如,一般我们系统的静态资源,比如js,css等,会存在一个版本号,如 main.js?v0,每当用户访问这个资源的时候,会发送一个比对请求到服务端,比对本地静态文件版本和服务端的文件版本是否一致,不一致则更新.这种任务一般不占原创 2016-02-21 00:39:05 · 11389 阅读 · 1 评论 -
JVM 内存 (堆(heap)、栈(stack)和方法区(method) )
这两天看了一下深入浅出JVM这本书,推荐给高级的java程序员去看,对你了解JAVA的底层和运行机制有比较大的帮助。废话不想讲了.入主题:先了解具体的概念:JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只转载 2016-03-06 20:20:16 · 1450 阅读 · 0 评论 -
Tomcat Context reloadabled 与 OutOfMemory(PermSpace)
我们知道,Sun JVM分代垃圾回收器把堆空间分成3块:Young Gen:年轻代,包括1个Eden区和2个Suvivor区,新创建的对象(大部分为短周期的对象)将进入这个区,虚拟机会频繁地对这个区进行垃圾回收。Old Gen:年老代,当对象在Young Gen呆地足够久(经过几次的垃圾回收仍然存在)或Young Gen空间不足时,对象将进入Old Gen,由于一般是生命周期比较长的对象,转载 2016-06-18 15:24:01 · 1328 阅读 · 0 评论 -
Java Classloader机制解析
做Java开发,对于ClassLoader的机制是必须要熟悉的基础知识,本文针对Java ClassLoader的机制做一个简要的总结。因为不同的JVM的实现不同,本文所描述的内容均只限于Hotspot Jvm.本文将会从JDK默认的提供的ClassLoader,双亲委托模型,如何自定义ClassLoader以及Java中打破双亲委托机制的场景四个方面入手去讨论和总结一下。JDK默认C转载 2016-07-04 21:55:39 · 844 阅读 · 0 评论 -
JVM参数配置大全
前阵子遇到几个面试题都是关于对Java内存控制的,因此从网上找到这篇文章,希望自己对Java的内存分配有重新的认识/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M转载 2016-07-05 18:29:15 · 905 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种转载 2016-07-06 14:55:49 · 835 阅读 · 0 评论 -
一道面试题比较synchronized和读写锁
一、科普定义这篇博文的两个主角“synchronized”和“读写锁”1)synchronized这个同步关键字相信大家都用得比较多,在上一篇“多个线程之间共享数据的方式”中也详细列举他的应用,在这就不多说只做几点归纳:Java提供这个关键字,为防止资源冲突提供的内置支持。当任务执行到被synchronized保护的代码片段的时候,它检查锁是否可用,然后获取锁,执行转载 2016-07-31 21:56:50 · 786 阅读 · 0 评论 -
13个不容错过的Java项目
今天我们将整理一大波干货满满的Java示例代码与能力展示素材。GitHub可谓一座程序开发的大宝库,有些素材值得fork,有些则能帮助我们改进自有代码或者学习编程技能。无论如何,开发工作当中我们几乎不可能绕得开GitHub。下面,我们将一同分享各有趣且颇为实用的Java库,大家请任取所需、不用客气~1.极致精简的JavaBootique是一项用于构建无容器可运行Java应用的极简技转载 2016-09-03 14:23:02 · 8904 阅读 · 0 评论 -
实战SoftReference被回收的时机
这是我最近在开发的一个基于客户端发现模式(因为基于服务端发现的都比较多了,consul还做得很好)的服务注册发现框架: https://github.com/leoChaoGlut/ServiceDIscoveryAndRegistry然后在过程中遇到这样一个问题:在做client-service-proxy的时候,要实现一个负载均衡算法.我选了比较常用的原创 2016-08-10 00:18:06 · 2835 阅读 · 0 评论 -
深入分析Volatile的实现原理
引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是 轻量级的synchronized ,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的转载 2016-07-11 10:27:18 · 4454 阅读 · 0 评论 -
JSR133中文版
原文链接 译文链接 翻译:丁一 下载:JSR133中文版本文是JSR-133规范,即JavaTM内存模型与线程规范,由JSR-133专家组开发。本规范是JSR-176(定义了JavaTM平台 Tiger(5.0)发布版的主要特性)的一部分。本规范的标准内容将合并到JavaTM语言规范、JavaTM虚拟机规范以及java.lang包的类说明中。本JSR-133规范将不再通过JC转载 2018-01-24 09:50:02 · 761 阅读 · 0 评论