posts - 4,  comments - 0,  trackbacks - 0
            2011年5月21日
          Heap堆內存理解

          一個JVM實例只有一個堆內存,堆內存的大小是可以調節的。類加載器讀取類文件后,需要把類文件、方法、常量放入到堆內存中,以便執行器執行,堆內存分為三部分:

          1. Permanent Space 永久存儲區

          永久存儲區是一個常駐內存區域,用于存放JDK自身所攜帶的Class,Interface的元數據,也就是說它存儲的是運行環境必須的類信息,被裝載進此區域的數據是不會被垃圾回收器回收掉的,關閉JVM才會釋放此區域所占用的內存。
          2.Young Generation Space 新生區
          新生區是類的誕生、成長、消亡的區域,一個類在這里產生,應用,最后被垃圾回收器收集,結束生命。
          新生區又分為兩部分:伊甸區(Eden space)和幸存者區(Survivor pace)。
          所有的類都是在伊甸區被new出來的。幸存區有兩個: 0區(Survivor 0 space)和1區(Survivor 1 space)。當伊甸園的空間用完時,程序又需要創建對象,JVM的垃圾回收器將對伊甸園區進行垃圾回收,將伊甸園區中的不再被其他對象所引用的對象進行銷毀。然后將伊甸園中的剩余對象移動到幸存0區。若幸存0區也滿了,再對該區進行垃圾回收,然后移動到1區。那如果1區也滿了呢?再移動到養老區。

          3. Tenure Generation Space 養老區
          養老區用于保存從新生區篩選出來的JAVA對象,一般池對象都在這個區域活躍。 三個區的示意圖如下:


          posted @ 2011-05-21 09:42 賀斌 閱讀(590) | 評論 (0)編輯 收藏
            2011年5月20日
          本篇學習棧內存基本知識,附上JAVA代碼
           1package com.howard.jvm;
           2/**
           3 * JAVA的內存管理 (一) 棧內存
           4 * Stack棧 棧內存  JAVA程序的運行區。 是在線程創建時創建,它的生命周期是跟隨線程的生命周期,線程結束棧內存也就釋放,對于棧來說不存在垃圾回收問題
           5 * 只要線程一結束,該棧就Over。
           6 * 棧中的數據都是以棧幀(Stack Frame)的格式存在,棧幀是一個內存區塊,是一個數據集,是一個有關方法(Method)和運行期數據的數據集,當一個方法
           7 * A被調用時就產生了一個棧幀F1,并壓入到棧中,A方法又調用B方法,于是產生棧幀F2也被壓入棧,執行完畢后,先彈出F2棧幀,然后再彈出F1棧幀,遵循“
           8 * 后進先出”的原則。
           9 * 棧幀中主要保存3類數據:
          10 * 1. 本地變量(local Variables),包括輸入參數和輸出參數以及方法內變量;
          11 * 2. 棧操作(Operand Stack),記錄入棧和出棧操作;
          12 * 3. 棧幀數據(Frame Data),包括類文件、方法等等。
          13 *
          14 * @author Administrator
          15 *
          16 */

          17public class StackMemory {
          18
          19    public void methodA() {
          20        System.out.println("產生一個棧幀F1");
          21        int i = 1;
          22        System.out.println("變量i 放入到棧幀F1中");
          23        System.out.println("準備產生一個棧幀F2");
          24        methodB("hello world");
          25    }

          26
          27    public String methodB(String arg) {
          28        System.out.println("產生一個棧幀F2");
          29        System.out.println("參數arg 和 方法返回值 放入到棧幀F2中");
          30        return arg;
          31    }

          32
          33    public static void main(String[] args) {
          34        StackMemory sm = new StackMemory();
          35        System.out.println("準備產生一個棧幀F1,因為將要調用methodA方法");
          36        sm.methodA();
          37    }

          38
          39}

          40



          posted @ 2011-05-20 22:14 賀斌 閱讀(977) | 評論 (0)編輯 收藏
            2011年5月17日
               摘要: mysql jdbc  閱讀全文
          posted @ 2011-05-17 13:19 賀斌 閱讀(2437) | 評論 (0)編輯 收藏
          口水:第一次寫博客,歡迎大家來拍磚。
          最近項目中用mysql主從復制主要是為了實現讀寫分離、數據庫備份、故障轉移的需要,采用的是一主一從,配置比較簡單。
          自已在本機做測試
          測試環境如下:
          OS:win7
          mysql: 安裝兩個版本的mysql ,一個是5.5.x(高版本做主) 一個是5.1.x.(從)

          配置文件 win下my.ini  linux下:my.conf

          1. 配置主庫

          #配置主從數據庫
          server-id=1
          #主從復制是通過二進制文件來進行,所以要開啟日志功能
          log-bin=mysql-bin
          #主機,讀寫都可以
          read-only=0
          #需要備份數據,多個寫多行
          binlog-do-db=core
          #不需要備份的數據庫,多個寫多行
          binlog-ignore-db=test
          binlog-ignore-db=mysql

          2. 配置從庫

          #主從配置
          server-id=2
          log-bin=mysql-bin
          #主機地址
          master-host=127.0.0.1
          master-user=slave1
          master-password=slave1
          master-port=3309
          #如果從服務器發現主服務器斷掉,重新連接的時間差(秒)
          master-connect-retry=60
          #只復制某個庫
          replicate-do-db=core
          #不復制某個庫
          replicate-ignore-db=mysql

          3. 設置權限
          給主數據庫授予一個可以進行復制的用戶
          GRANT replication slave ON *.* TO 'slave1'@'%' IDENTIFIED BY 'slave1';

          4. 啟動從庫復制
          mysql>slave start;
          myslq>slave stop;

          5. 查看復制狀態
          主庫:mysql>show master status\G(注意,不用加分號)
          從庫:mysql>show slave status\G

          從庫設置主庫信息
          change master to
          > master_host='master_ip',
          > master_user='user',
          > master_password='pwd',
          > master_port=3307,
          > master_log_file='mysql-bin.000020',
          > master_log_pos=135617781;

          6. 解決未同步的可能出現的問題

          set GLOBAL SQL_SLAVE_SKIP_COUNTER=1

          出現過的問題:
          a. character 的問題 是mysql client的問題,需要把客戶端的character設置和server 一樣

          7. 如果出現復制錯誤,從服務器的錯誤日志(HOSTNAME.err)中也會出現錯誤消息。

          以上配置測試通過,有問題歡迎一起來討論
          posted @ 2011-05-17 11:02 賀斌 閱讀(1610) | 評論 (0)編輯 收藏
          僅列出標題  
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 河源市| 马边| 紫云| 城步| 左贡县| 长春市| 垣曲县| 呈贡县| 曲阳县| 南昌市| 景宁| 扶风县| 巴里| 夏河县| 瓦房店市| 东辽县| 保德县| 北京市| 中超| 达孜县| 富顺县| 遂平县| 清河县| 玉龙| 望城县| 沭阳县| 龙里县| 台安县| 乌拉特后旗| 资兴市| 定兴县| 邓州市| 临夏县| 十堰市| 平昌县| 贵定县| 会宁县| 兖州市| 长葛市| 澄城县| 旺苍县|