咱们知道Java最有名的宣传口号就是:“一次编写,处处运行(Write Once,Run Anywhere)”,而其平台无关性则是依赖于JVM, 全部的java文件都被编译成字节码(class)文件,而虚拟机只须要认识字节码文件就能够了。想要弄懂虚拟机以及类加载机制,这部份内容…
html
来自 飒然Hang in java
java
本篇随笔主要讲述了在线程序经过脚本或者代码进行更新的一个例子.
a.在线程序一般会有更改内存数据或者修复错误逻辑的需求.
b.更改内存数据则一般是找到要修改的对象,而后直接经过加载更新脚本更新对象数据.
c.更改错误逻辑,一般是新写一个class,继承出错的类并覆写出错的…
面试
类加载的双亲委派模型 双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应当有本身的父类加载器。这里类加载器之间的父子关系通常不会以继承关系来实现,而是都使用组合关系来复用父加载器的代码 工做过程: 若是一个类加载器收到了类加载的请求,它首先不会本身去尝试加载这个类,而…
编程
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,而后在堆区建立一个 java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的 Class对象, Class对象封装了类在方法区内的数据结构…
缓存
Welcome to Turnaround article series from ZeroTurnaround.
In this article we will review how to reload a Java class using a dynamic classlo…
安全
从这篇开始咱们开始探讨一些jvm调优的问题。在jvm调优中一个离不开的重点是垃圾回收,当垃圾回收成为系统达到更高并发量的瓶颈时,咱们就须要对jvm中若是进行“自动化”垃圾回收技术实施必要的监控和调节。 对于调优以前,咱们必需要了解其运行原理,java 的垃圾收集Garbage …
服务器
Java GC就是JVM记录仪,书画了JVM各个分区的表演。 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,做为Java开发者,通常不须要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不须要像C…
数据结构
全部的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实若是你常常解决服务器性能问题,那么这些问题就会变的很是常见,了解JVM内存也是为了服务器出现性能问题的时候能够快速的了…
多线程
前几日,下了班在家时忽然收到监控报警,线上一组业务机器 CPU 被打满至 100%,为了保持服务的稳定运行,临时采起了升级配置、加机器等粗暴的方法将当晚扛了过去。 半夜想了下可能的缘由,因为可能因素太多,不能肯定,次日到公司后,在一台预发机器上把 Java Mission Co…
并发
相信大多数Javaer对Java的内存结构都有必定的了解,但若是对于Java的内存结构只停留的"堆","栈"中显然是不够的。今天来给你们详细谈一谈Java的内存区域结构,本文基于 JDK7 的内存结构作讲解,JDK8的内存结构加上了metaspace,有些许变更,想详细了解的同…
CPU 100%确定是出现死锁,这个时候观察内存仍是够用的,可是CPU一直100%,如下几步解决: 1. 找到进程消耗cpu最大的 2. 打出进程中线程占用状况: 3. dump文件: 4. 找到#2步的PID对应的16进制 5. 在#3的dump文件中找到#4对应的线程堆栈(…
吕 晶 和 邱 小侠 深刻 Java 调试体系,第 2 部分
做者:胡 睿 和 吕 晶
在多核时代,如何提升 CPU 的性能成为了一个永恒的话题,而这个话题的讨论主要就是如何定义一个高性能的内存模型,内存模型用于定义处理器的各层缓存与共享内存的同步机制及线程和内存交互的规则。 Java 的世界也有属于它本身的内存模型,Java 内存模型,即 Java Memory Mode…
以前在看 agentzh 的此篇博文动态追踪技术漫谈时,领会到了动态追踪技术的强大之处,也一直因为没法在不重启线上服务器的状况下排查线上问题在寻找 Java 中的动态追踪工具。在公司内部的 JavaEE 性能检测框架中,咱们使用了 asm 作字节码注入来作线上性能的监测,沿着这个思路,若是要作到动态追踪应该是须要作字节码注入的,可是额外的一点是须要动态加载字节码替换掉原有的类的。此外,性能监测框架是须要耦合到业务应用中的,没法作到一个监测工具的灵活性。
后来听同事提到了 BTrace 这个工具,因而去尝试了一下。BTrace 是 SUN Kenai 云计算开发平台下的一个开源项目,旨在为 java 提供安全可靠的动态跟踪分析工具。江南白衣的这篇文章 http://calvin1978.blogcn.com/... 作了比较详细的描述。
1.JVM的结构到底有哪些? 快速过一遍JVM的内存结构,JVM中的内存分为5个虚拟的区域: 堆 ▪ 你的Java程序中所分配的每个对象都须要存储在内存里。堆是这些实例化的对象所存储的地方。是的——都怪new操做符,是它把你的Java堆都占满了的! ▪ 它由全部线程共享 ▪ …
BTrace 是神器,每个须要天天解决线上问题,但彻底不用 BTrace 的 Java 工程师,都是可疑的。
BTrace 的好处,是能够经过本身编写的脚本,随时获取应用的一切调用信息,而不像原来那样,不断的修改代码,加入 System.out.println(), 而后重启,而后重启,而后重启!!!并且,特别严格的约束,保证本身的消耗特别小,只要定义脚本时不做大死,直接在生产环境打开也没太大影响。
在网上搜索 BTrace 能出来很多文章,都有点旧了,并且不够详细,因而决定,从新写一份。
Java 的值传递和引用传递在面试中通常都会都被涉及到,今天咱们就来聊聊这个问题,首先咱们必须认识到这个问题通常是相对函数而言的,也就是 java 中的方法参数,那么咱们先来回顾一下在程序设计语言中有关参数传递给方法(或函数)的两个专业术语:
按值调用(call by value)
按引用调用(call by reference)
经过对 Java 内存模型的了解,加深多线程的并发问题解决方案的理解。
自动垃圾回收是Java相较于C++的一个重要的特色,想了解JVM的垃圾回收机制,首先咱们要知道垃圾回收是回收什么地方的垃圾,这里的回收主要是指对JVM内存区域的Java堆和方法区的内存的回收。
说明 有关java并发能够看这里:https://yuedu.baidu.com/ebook... 要学习Java或者任意一门技术,我以为最好的是从官网的资料开始学习。官网所给出的资料老是最权威最知道来…
在Java字符串那些事儿一文发表后,朋友给我留言说:比较字符串用equals不就完了呗,干吗要用"==",吃饱了撑的,能不能来点实际的。其实在文章里我是想代表,Java字符串两种声明方式在堆内存中不一样的体现,咱们在写代码过程当中,为了不重复的建立对象,尽可能使用String s1…
jvm 调优 - 工具篇
Dennis M. Sosnoski Java 编程的动态性,第 1 部分
秋招开始了,前面因为作别的事耽误了半个月,之前学的东西不用就很容易忘记。因此,此次从新阅读《深刻理解 JVM 虚拟机》时,想作一个记录。将碎片的知识整合,方便本身之后阅读,同时也和你们一块儿分享。内容中会添加我本身的理解,其中若是有错误,欢迎你们指正。 相关阅读: 1. 重拾数据…
本文由 ImportNew - 黄小非 翻译自 javacodegeeks。
公司的江南白衣写了一篇关键业务系统的JVM参数推荐(2016热冬版)的文章,大牛的文章老是须要细细品读。这篇文章介绍大量的JVM调优参数,内容也比较多,本文只是列出我本身能理解的一些参数,暂时理解不了的参数就只能等之后本身实力到家了,再慢慢补充上来。 IntegerCache有…