`
文章列表

JVM内存结构

    博客分类:
  • jvm
1、JVM的概念          虚拟机是模拟执行某种指令集体系结构(ISA)的软件,是对操作系统和硬件的一种抽象。java虚拟机就是对计算机系统结构的一种简单模拟。         Java虚拟机(JVM)是由Java虚拟机规范定义的,其上运行的 ...
       在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭 ...
一、什么是同步器       多线程并发的执行,之间通过某种共享状态来同步这个共同的语义可以称之为同步器。可以认为以上所有的锁机制都可以基于同步器定制来实现的。    而juc(java.util.concurrent)里的思想是将这些场景抽象出来的语义通过统一的同步框架来支持。 juc 里所有的这些锁机制都是基于 AQS ( AbstractQueuedSynchronizer )框架上构建的。下面简单介绍下 AQS( AbstractQueuedSynchronizer )。 可以参考Doug Lea的论文The java.util.concurrent Synchronize ...
 一、基础概念总结 1.多线程程序可能存在的风险:(1)安全性问题:多线程程序在没有充足同步的情况下,在特定的线程执行时序下,多个线程同时操作一块共享资源时,可能引发错误。(2)活跃性问题:当多个线程存在竞争共享资源时,可能会引发死锁,饥饿(线程长时间得不到执行)及活锁(定义:不断的重复相同的操作,而且永远不会成功)或死循环等问题。(3)性能问题:引入多线程后,如果设置不当可能发生线程的频繁的上下文切换,针对共享数据的同步抑制编译器的优化,或者线程内存缓存失效等带来的性能问题。 2.线程安全
问题一、java的by value而非by reference传递方式         java中的数据类型分为两大类:基础类型和引用类型,基础类型的值传递很容易理解,它被作为参数传递并修改后,并不会影响它原来的值,而引用类型,它传的是它引用的 ...
一、JVM参数的使用 1、Xms与Xmx Xms:JVM启动时初始化堆内存的大小 Xmx:JVM分配的堆内存的最大值 Xms设置的值过小,可能会导致应用启动时内存不够,从而应用启动失败,Xmx值过小,可能会导致应用启动后运行一段时间,内存不够用,一般设置Xmx大小为总机器内存的80%。同时将Xms的值和Xmx的值设置为一样,从而减少系统新增heap内存带来的性能损耗。   错误:java.lang.OutOfMemoryError. Java heap space JVM在启动的时候会自动设置JVM Heap的值,Heap的大小是Young Generation 和Tenure ...
1、String类 String是一个特殊的类,它自带的方法里面看起来修改字符串内容的实际上都是返回一个新的字符串,而原来的字符串从未被改变过。 2、重载操作符(在特定的类操作中,操作符的含义被重新定义过) “+”操作符被用作连接字符串对象是,它底层会创建一个StringBuider对象,然后调用append方法来连接字符串。 3、toString方法 当“+”号连接的对象不是一个String时,它会自动调用这个对象的toString方法,如果该对象没有重写toString的方法,就会直接执行Object的toString方法,打印出内存地址。 4、使用正则表达式来对字符进行匹配 ...
1、java集合类的结构图: 2、List、Set、Map各种实现的差别:   List:用于存放可重复的对象 Set:用于存放不可重复的对象 Map:存放键值对 ArrayList适合随机访问;LinkedList适合插入和删除;HashSet使用散列,查询速度较快;TreeSet使用红黑树存储,默认按字典顺序排序;LinkedHashSet按插入顺序保存元素;HashMap快速访问;TreeMap按默认规则排序;LinkedHashMap按插入顺序保存同时提供快速访问能力;HashMap非同步不安全;HashTable同步安全;Vector、Stack也是同步安全的。 3、重 ...
1、为什么需要编码     计算机中存储信息的最小单元是一个字节即 8 个 bit,所以能表示的字符范围是 0~255 个;人类要表示的符号太多,无法用一个字节来完全表示;要解决这个矛盾必须需要一个新的数据结构 char,从 char 到 byte 必须编码。 2、各种常见编码的简介 ASCII 码 学过计算机的人都知道 ASCII 码,总共有 128 个,用一个字节的低 7 位表示,0~31 是控制字符如换行回车删除等;32~126 是打印字符,可以通过键盘输入并且能够显示出来。
Global site tag (gtag.js) - Google Analytics